wpf 如何在DataGrid和List中包含的类T的字段之间实现双向数据绑定< T>?

lb3vh1jj  于 2023-05-19  发布在  其他
关注(0)|答案(1)|浏览(164)

我有一个下面的DataGrid在我的XAML。

<DataGrid 
                ItemsSource="{Binding SomeClassInstance.SomeList, Mode=TwoWay}">

                <DataGrid.Columns>
                    <DataGridTemplateColumn>
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                
                                <CheckBox
                                    IsChecked="{Binding ShouldInclude, Mode="TwoWay"}"/>
                                
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                </DataGrid.Columns>
            </DataGrid>

其中SomeList是类型为ObservableCollection<SomeClass>的字段,其中SomeClass的字段ShouldInclude是bool。
我希望在SomeList的每个成员和DataGrid的复选框之间建立双向数据绑定,以便当我选中/取消选中DataGrid中的CheckBox时,列表的相应类示例将其ShouldInclude字段设置为true/false。
字段SomeList看起来像这样:

private ObservableCollection<SomeClass> _someList;
        public ObservableCollection<SomeClass> SomeList
        {
            get
            {
                return _someList;
            }
            set
            {
                if (value != _someList)
                {
                    _someList = value;
                    OnPropertyChanged(nameof(SomeList));

                }
            }
        }

SomeClass有一个字段ShouldInclude,如下所示。

private bool _shouldInclude;
        public bool ShouldInclude
        {
            get
            {
                return _shouldInclude;
            }
            set
            {
                if (value != _shouldInclude)
                {
                    _shouldInclude = value;
                    OnPropertyChanged(nameof(ShouldInclude));
                }
            }
        }

我在ShouldInclude的setter中添加了一个Debug.WriteLine,它只能被SomeClass的构造函数访问。
对我来说,这表明类本身设置正确,但XAML数据绑定中的某些内容没有正确实现。我只是不知道该怎么弥补

llew8vvj

llew8vvj1#

将绑定的UpdateSourceTrigger属性设置为PropertyChanged,以在选中或取消选中CheckBox时触发setter:

<CheckBox IsChecked="{Binding ShouldInclude,UpdateSourceTrigger=PropertyChanged}"/>

相关问题