我有一个绑定到ObservableCollection<MyModel>
MyModel
的DataGrid有一个布尔属性IsSelected,它绑定到视图上的一个复选框。但是单击该复选框不会更新MyModel.IsSelected值。我知道我的绑定是正确的,因为如果我从viewModel将true
分配给IsSelected,我可以看到复选框已选中。但是当我点击复选框时,它不会改变IsSelected值。
以下是我的观点:
<DataGrid ItemsSource="{Binding HomeTeamAthletes}"
MinHeight="200" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTemplateColumn Width="30">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding IsSelected, Mode=TwoWay}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Binding="{Binding IsSelected, Mode=TwoWay}" />
</DataGrid.Columns>
</DataGrid>
这是我的ViewModel:
public class MyViewModel : ViewModelBase
{
public ObservableCollection<MyModel> HomeTeamAthletes =>
new ObservableCollection<MyModel>
{
new MyModel(),
new MyModel(),
new MyModel(),
new MyModel(),
new MyModel(),
};
public class MyModel : ObservableObject
{
private bool _isSelected;
public bool IsSelected
{
get => _isSelected;
set { Set(ref _isSelected, value); }
}
public MyModel()
{
IsSelected = true;
}
}
}
答案 0 :(得分:0)
似乎CheckBox.IsChecked绑定并没有立即将值传播到绑定源。要更改该集UpdateSourceTrigger=PropertyChanged
<CheckBox IsChecked="{Binding IsSelected, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />