【发布时间】:2015-08-10 07:48:32
【问题描述】:
我在 WPF C# 的数据网格内有一个复选框。
<DataGridCheckBoxColumn Binding="{Binding IsSelected,UpdateSourceTrigger=PropertyChanged}" CanUserSort="False">
<DataGridCheckBoxColumn.ElementStyle>
<Style TargetType="CheckBox" BasedOn="{StaticResource {x:Type CheckBox}}">
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="HorizontalAlignment" Value="Center"/>
</Style>
</DataGridCheckBoxColumn.ElementStyle>
<DataGridCheckBoxColumn.HeaderTemplate>
<DataTemplate x:Name="dtAllChkBx">
<CheckBox Name="cbxAll" HorizontalAlignment="Center" Margin="0,0,5,0" IsEnabled="{Binding Path=DataContext.IsCbxAllEnabled,RelativeSource={RelativeSource AncestorType=DataGrid}}"
IsChecked="{Binding Path=DataContext.AllSelected,RelativeSource={RelativeSource AncestorType=DataGrid},UpdateSourceTrigger=PropertyChanged}"/>
</DataTemplate>
</DataGridCheckBoxColumn.HeaderTemplate>
</DataGridCheckBoxColumn>
当我选中 All 复选框时,它当然会标记所有复选框,但是一旦我取消选中一个复选框,All 复选框仍然处于选中状态。这应该是未选中的。我应该如何使用 WPF C# 来做到这一点。
【问题讨论】:
-
我们能看到 AllSelected 属性的代码吗?
-
@GlenThomas private bool _AllSelected; public bool AllSelected { get { return _AllSelected; } 设置 { _AllSelected = 值; TaskList.ToList().ForEach(x => x.IsSelected = value); NotifyOfPropertyChange(() => AllSelected); } }
-
AllSelected 属性用于全选和取消全选。
-
TaskList项的IsSelected值是否有NotifyOfPropertyChange?
-
编写复选框逻辑的完整代码。不知道我在哪里做错了