繁体   English   中英

WPF DataGrid 不会将更改的值保存到变量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM