当用户单击TreeView中的元素时,将触发此功能:
private void treeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
Vozlisce v = (Vozlisce)treeView.SelectedItem;
v.tabela.pretvoriListVDataTable();
seznam.ItemsSource = v.tabela.dt.DefaultView;
}
它将类型为ObservableCollection<Vozlisce>
的dt中的元素复制到具有xaml的自定义数据网格:
<DataGrid x:Name="seznam" Margin="516,64,131.2,35.4" ItemsSource="{Binding DataSource}" AlternatingRowBackground="Gainsboro" AlternationCount="2" AutoGenerateColumns="False" >
<DataGrid.Columns>
<DataGridTemplateColumn Header="name" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<TextBox Text="{Binding ime}"/>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="value" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<TextBox Text="{Binding utez}"/>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
seznam.ItemsSource = v.tabela.dt.DefaultView;
我的问题是当我尝试从用户单击保存按钮时从DataGrid
获取数据时,它不会从数据网格中获取当前更改的数据,它会复制我在开头时放入的相同数据seznam.ItemsSource = v.tabela.dt.DefaultView;
保存按钮功能:
private void btnShraniUtezi_Click(object sender, RoutedEventArgs e)
{
DataView dataView = (DataView)seznam.ItemsSource;
DataTable dt = dataView.ToTable();
//test
double val = dt.Rows[1].Field<double>("utez");
MessageBox.Show(val.ToString());
}
如何从DataGrid获取当前更改的数据? 我正在使用WPF。
答案 0 :(得分:0)
您在说明中说明了此行“seznam.ItemsSource = v.tabela.dt.DefaultView;
” - 您是在后面的某些代码或viewmodel设置中执行此操作吗?如果是这样,那么您将破坏绑定到您在xaml中声明的属性“DataSource”。那是你的意图吗?
你对ime和utez的绑定是双向的,所以任何尝试写入数据网格中的那些位置都应该通过在viewmodel中对该属性放置断点来捕获,并且你可能能够更好地了解发生了什么,或者更确切地说是什么不发生。