WPF MVVM DATAGRID select 或 deselect 所有行
WPF MVVM DATAGRID select or deselect all rows
这是我的 DataGrid,我如何知道用户是否选择或取消选择了 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
一旦项目 selected/deselected:
<ie:Interaction.Triggers>
<ie:EventTrigger EventName="SelectionChanged">
<ie:InvokeCommandAction Command="{Binding SelectedItemChangedCommand}"/>
</ie:EventTrigger>
</ie:Interaction.Triggers>
在里面可以做简单的计算,比如:
var allRowsSelected = MyItems.All(x => x.IsSelected)
这是我的 DataGrid,我如何知道用户是否选择或取消选择了 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
一旦项目 selected/deselected:
<ie:Interaction.Triggers>
<ie:EventTrigger EventName="SelectionChanged">
<ie:InvokeCommandAction Command="{Binding SelectedItemChangedCommand}"/>
</ie:EventTrigger>
</ie:Interaction.Triggers>
在里面可以做简单的计算,比如:
var allRowsSelected = MyItems.All(x => x.IsSelected)