WPF MVVM DATAGRID 选择或取消选择所有行



这是我的数据网格,我怎么知道用户是选择还是取消选择了数据网格的所有行?

谢谢

        <DataGrid ItemsSource="{Binding Dati_Viag}" SelectedItem="{Binding SelectDat}" Style="{DynamicResource ST_DataGrid}" 
                  CellStyle="{DynamicResource St_DataGridCellStyle}" SelectionMode="Extended" Name="Dg_Dati" >
        <DataGrid.Columns>
            <DataGridTextColumn x:Name="col_A" Binding="{Binding Path=A}" Header="A" Width="250" />
            <DataGridTextColumn x:Name="col_U" Binding="{Binding Path=B}" Header="B" Width="250" />
            <DataGridTextColumn x:Name="col_K" Binding="{Binding Path=C}" Header="C"  Width="250" />
        </DataGrid.Columns>
    </DataGrid>

在视图模型中公开属性IsSelected,并将其绑定到DataGrid中:

<DataGrid.RowStyle>
    <Style TargetType="DataGridRow">
        <Style.Triggers>
            <Trigger Property="IsSelected"
                        Value="{Binding IsSelected, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
                <Setter Property="BorderBrush"
                        Value="Blue" />
                <Setter Property="BorderThickness"
                        Value="2" />
            </Trigger>
        </Style.Triggers>
    </Style>
</DataGrid.RowStyle>

完成此操作后,您可以使用交互式触发器,这些触发器将在选择/取消选择项目后调用视图模型Command

<ie:Interaction.Triggers> <ie:EventTrigger EventName="SelectionChanged"> <ie:InvokeCommandAction Command="{Binding SelectedItemChangedCommand}"/> </ie:EventTrigger> </ie:Interaction.Triggers>

您可以在其中进行简单的计算,例如:

var allRowsSelected = MyItems.All(x => x.IsSelected)

最新更新