У меня есть DataGrid
с DataGridCheckBoxColumn
. Сетка имеет привязку со списком объектов. Я хочу, чтобы, если флажки отмечены N, флажок отключен, но я не знаю, как выполнить отключение.wpf datagridcheckboxcolumn: как включить/отключить флажки
<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");
}
}
Два года спустя я хочу сказать спасибо, потому что это решило другую проблему, которую я испытывал. DataGrid.Столбцы не являются частью дерева проектирования в WPF, поэтому, когда у вас есть привязки, например, на клетке checkbox, вы не можете выполнять поиск RelativeSource AncestorType, скажем ... в главном окне. Таким образом, вы не можете привязываться к datacontext окна, вы должны привязываться к datacontext datagrid, который может быть различным в определенных ситуациях. ОДНАКО Ваше решение по стилю в ресурсах datagrid позволяет относительному источнику быть привязанным к окну, поэтому столбец флажка теперь может привязываться к нему через прокси-сервер! – user99999991