[英]WPF DataGrid does not save changed value to variable
所以,我有这个小 WPF 片段:
<DataGrid x:Name="lstCategories" AutoGenerateColumns="False" Grid.Row="0"
Margin="5,5,5,5" ScrollViewer.CanContentScroll="True" SelectionMode="Single" CanUserSortColumns="False" CanUserReorderColumns="False">
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.Header>
<DataGridColumnHeader Tag="All" Click="DataGridColumnHeader_Click">All</DataGridColumnHeader>
</DataGridTemplateColumn.Header>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding enabled}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="Category" Width="Auto" IsReadOnly="True" Binding="{Binding category}" />
</DataGrid.Columns>
</DataGrid>
其中显示的数据如下:
lstCategories.ItemsSource = categoryList;
现在,当用户单击复选框时,我希望数据网格将此更改写入categoryListItem.enabled
,但是当我检查该值时,无论如何它都会显示 true。 如何使 DataGrid 存储对其用作数据源的变量的更改?
附加信息:我选择了带有嵌入式复选框的 TemplateColumn 方法,因为这样用户就不必单击两次来修改复选框。
更新 1:我已更新 XAML 以将双向绑定合并为:
<CheckBox IsChecked="{Binding enabled, Mode=TwoWay}"/>
数据源变量仍未更新。
我看到您已经弄清楚Mode=TwoWay
(无论如何这不是必需的,因为如果您没有明确设置它,它就是默认值)。 现在您要做的就是将UpdateSourceTrigger
设置为PropertyChanged
。
<DataTemplate>
<CheckBox IsChecked="{Binding enabled, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
</DataTemplate>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.