У меня есть сетка данных с одним из столбцов, являющихся флажками.Я также определил флажок заголовка, который, когда проверено, выберет все другие флажки.Привязка к этому написана полностью в файле xaml моего представления.
У меня также есть обратный вызов «SelectionChanged» для динамического создания параметров ContextMenu на основе набора значений в выбранных строках.
Вот мой xaml:
<DataGrid x:Name="SelectionTestList"
ItemsSource="{Binding SelectionTests.Values}"
SelectionChanged="SelectionTestList_OnSelectionChanged">
<DataGrid.ContextMenu>
<ContextMenu ItemContainerStyle="{StaticResource ContextMenuItemStyle}"
ItemsSource="{Binding MenuOptions, Mode=OneWay}">
</ContextMenu>
</DataGrid.ContextMenu>
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.Header>
<CheckBox
x:Name="SelectAllCheckBox">
</CheckBox>
</DataGridTemplateColumn.Header>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox
IsChecked="{Binding IsChecked, ElementName=SelectAllCheckBox, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn
Header="Criteria A"
IsReadOnly="True"
Binding="{Binding CriteriaA, Mode=OneWay, StringFormat=D2}">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="HorizontalAlignment" Value="Center" />
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
...more columns
</DataGrid.Columns>
</DataGrid>
Теперь я также хочу, чтобы сетка данных была автоматически выбрана / снята, когда ее флажок установлен / снят.Одна из возможных вещей, которую я пробовал, это использовать что-то вроде:
IsChecked="{Binding Path=IsSelected, Mode=TwoWay, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGridRow}}}"/>
Но это избавляет от предыдущего поведения, которое я настроил с помощью «SelectAllCheckBox».
Есть лиспособ объединить два флажка поведения, которое я хочу?(то есть строки выбираются / не выбираются в зависимости от его флажка и имеют флажок «выбрать все», чтобы выбрать все флажки (и, следовательно, все строки)). Было бы легче реализовать это либо в коде представления позади, либо в модели представления с привязкой?