c# – wpf datagridcheckboxcolumn:如何启用/禁用复选框
发布时间:2020-12-15 05:40:12 所属栏目:百科 来源:网络整理
导读:我有一个DataGrid与DataGridCheckBoxColumn.网格具有与对象列表的绑定.我想要的是,如果选中了N个复选框,则取消选中已禁用,但我不知道如何执行禁用. DataGridCheckBoxColumn x:Name="IsFixedByBracketColumn" Header="Fissato con staffa" Binding="{Binding
我有一个DataGrid与DataGridCheckBoxColumn.网格具有与对象列表的绑定.我想要的是,如果选中了N个复选框,则取消选中已禁用,但我不知道如何执行禁用.
<DataGridCheckBoxColumn x:Name="IsFixedByBracketColumn" Header="Fissato con staffa" Binding="{Binding isFixedByBracket,UpdateSourceTrigger=PropertyChanged}" IsReadOnly="False"> <DataGridCheckBoxColumn.ElementStyle> <Style TargetType="CheckBox"> <Style.Triggers> <MultiDataTrigger> <MultiDataTrigger.Conditions> <Condition Binding="{Binding HasMaxNumberReached,RelativeSource={RelativeSource AncestorType={x:Type Window}}}" Value="true"/> <Condition Binding="{Binding IsChecked,RelativeSource={RelativeSource Self}}" Value="false"/> </MultiDataTrigger.Conditions> <Setter Property="IsEnabled" Value="False"/> </MultiDataTrigger> </Style.Triggers> <EventSetter Event="CheckBox.Checked" Handler="DataGridCheckBoxColumn_Checked" /> </Style> </DataGridCheckBoxColumn.ElementStyle> </DataGridCheckBoxColumn> 活动代码: private void DataGridCheckBoxColumn_Checked(object sender,RoutedEventArgs e) { CheckBox cb = (CheckBox)sender; if (cb.IsChecked == true) { this.numberOfCheckboxesChecked++; } else { this.numberOfCheckboxesChecked--; } if (this.numberOfCheckboxesChecked >= maxNumOfPointsPerSide) { this.HasMaxNumberReached = true; } else { this.HasMaxNumberReached = false; } } public bool HasMaxNumberReached { get { return hasMaxNumberReached; } set { hasMaxNumberReached = value; RaisePropertyChanged("HasMaxNumberReached"); } } 解决方法
感谢MSDN论坛中的Magnus,以下是问题的正确答案:
<DataGrid x:Name="grid" AutoGenerateColumns="False"> <DataGrid.Resources> <Style TargetType="CheckBox" x:Key="style"> <Style.Triggers> <MultiDataTrigger> <MultiDataTrigger.Conditions> <Condition Binding="{Binding HasMaxNumberReached,RelativeSource={RelativeSource AncestorType={x:Type Window}}}" Value="true"/> <Condition Binding="{Binding IsChecked,RelativeSource={RelativeSource Self}}" Value="false"/> </MultiDataTrigger.Conditions> <Setter Property="IsEnabled" Value="False"/> </MultiDataTrigger> </Style.Triggers> <EventSetter Event="CheckBox.Checked" Handler="DataGridCheckBoxColumn_Checked" /> <EventSetter Event="CheckBox.Unchecked" Handler="DataGridCheckBoxColumn_Checked" /> </Style> </DataGrid.Resources> <DataGrid.Columns> <DataGridCheckBoxColumn x:Name="IsFixedByBracketColumn" Header="Fissato con staffa" Binding="{Binding isFixedByBracket,UpdateSourceTrigger=PropertyChanged}" IsReadOnly="False" ElementStyle="{StaticResource style}" EditingElementStyle="{StaticResource style}"> </DataGridCheckBoxColumn> </DataGrid.Columns> </DataGrid> Here完整主题 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |