2015-02-06 4 views
0

У меня есть небольшая программа для редактирования XML-файлов. Я с помощью XMLDataProvider:Как добавить строку в DataGrid?

<Grid.DataContext> 
    <XmlDataProvider x:Name="XMLData" Source="/database/stroyka1.bas" XPath="JobArray/job"/> 
</Grid.DataContext> 

и DataGrid:

<DataGrid 
    Name="JobsDataGrid" 
    ItemsSource="{Binding}" 
    AutoGenerateColumns="false" Height="Auto" Width="Auto" 
    IsReadOnly="False" CanUserAddRows="True"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="ID" Binding="{Binding XPath=id, Mode=TwoWay}" /> 
     <DataGridTextColumn Header="Название" Binding="{Binding XPath=name, Mode=TwoWay}" /> 
     <DataGridTextColumn Header="Цена за единицу" Binding="{Binding XPath=price, Mode=TwoWay}"/> 
     <DataGridTextColumn Header="Единица измерения" Binding="{Binding XPath=measure, Mode=TwoWay}"/> 
    </DataGrid.Columns> 
</DataGrid> 

Как включить пустую строку ниже таблицы? CanUserAddRow=true и IsReadOnly=false нет работа. Я попытался добавить строку с пустыми параметрами в DataGrid, но есть ошибка:

Operation is not allowed when using ItemsSource. Instead, access and modify elements using ItemsControl.ItemsSource.

ответ

0

Большое спасибо, но я нахожу метод, но я костылью для этого вопроса. Я использую этот код:

private void AddNewRowMenuItem_OnClick(object sender, RoutedEventArgs e) 
    { 
     job pipainput = new job(JobsDataGrid.Items.Count+1,"",0,""); 
     XmlSerializer xmls = new XmlSerializer(typeof(job)); 
     var sb = new StringBuilder(512); 

     using (System.IO.StringWriter sw = new System.IO.StringWriter(sb)) 
      { 
       xmls.Serialize(sw, pipainput); 
      } 

     XmlDocument xmlk = new XmlDocument(); 
     xmlk.LoadXml(sb.ToString()); 

     XmlNode pipa = XMLData.Document.ImportNode(xmlk.ChildNodes[1], true); 
     XMLData.Document.DocumentElement.AppendChild(pipa); 
    }  

когда работа - мой класс. Работает отлично.

0

Here это объяснение. Элемент ItemsSource должен реализовать некоторые интерфейсы для его работы.

Смежные вопросы