Установите / снимите флажок «Строки данных» с помощью флажка - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть сетка данных с одним из столбцов, являющихся флажками.Я также определил флажок заголовка, который, когда проверено, выберет все другие флажки.Привязка к этому написана полностью в файле 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».

Есть лиспособ объединить два флажка поведения, которое я хочу?(то есть строки выбираются / не выбираются в зависимости от его флажка и имеют флажок «выбрать все», чтобы выбрать все флажки (и, следовательно, все строки)). Было бы легче реализовать это либо в коде представления позади, либо в модели представления с привязкой?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...