DataGrid VirtualizingStackPanel.IsVirtualizing
wpf吧
全部回复
仅看楼主
level 1
DataGrid 表格开启虚拟化后, 滚动表格 CheckBox自动取消选择,大佬帮忙看看
界面Xaml:
<DataGrid x:Name="dg_all" CanUserSortColumns="False" Grid.Column="0" VirtualizingStackPanel.IsVirtualizing="{Binding IsVirtualizing}"
HeadersVisibility="All" ColumnWidth="*" HorizontalAlignment="Center"
AutoGenerateColumns="False" CanUserAddRows="False" IsEnabled="{Binding NotInCacheing}"
CanUserDeleteRows="False" CanUserReorderColumns="False"
ScrollViewer.CanContentScroll="True"
VirtualizingPanel.ScrollUnit ="Item"
VirtualizingPanel.VirtualizationMode="Recycling"
IsReadOnly="True" ItemsSource="{Binding DataList}"
RowDetailsVisibilityChanged="dg_all_RowDetailsVisibilityChanged"
>
<DataGrid.ColumnHeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="BorderBrush" >
<Setter.Value>
<SolidColorBrush Color="Black" Opacity="0.2"></SolidColorBrush>
</Setter.Value>
</Setter>
</Style>
</DataGrid.ColumnHeaderStyle>
<DataGrid.Columns >
<DataGridTemplateColumn MinWidth="55" HeaderStyle="{StaticResource MonitorStyle}" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate DataType="vm:RunParameterMonitor" >
<CheckBox IsChecked="{Binding Monitor,Mode=TwoWay}">
<i:Interaction.Triggers >
<i:EventTrigger EventName="Checked">
<i:InvokeCommandAction
Command="{Binding Path=DataContext.MonitorCheckedCommand, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"
CommandParameter="{Binding Index}"/>
</i:EventTrigger>
<i:EventTrigger EventName="Unchecked">
<i:InvokeCommandAction
Command="{Binding Path=DataContext.MonitorUnCheckedCommand, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"
CommandParameter="{Binding Index}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</CheckBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn IsReadOnly="True" MinWidth="100" CanUserSort="False" HeaderStyle="{StaticResource ParameterNameStyle}" Width="*" Binding="{Binding Info.ParameterName}"></DataGridTextColumn>
<DataGridTextColumn IsReadOnly="True" CanUserSort="False" HeaderStyle="{StaticResource ValueStyle}" Width="*" Binding="{Binding Info.Value,Mode=TwoWay}"></DataGridTextColumn>
<DataGridTextColumn IsReadOnly="True" CanUserSort="False" HeaderStyle="{StaticResource MinValueStyle}" Width="*" Binding="{Binding Info.Min}"></DataGridTextColumn>
<DataGridTextColumn IsReadOnly="True" CanUserSort="False" HeaderStyle="{StaticResource MaxValueStyle}" Width="*" Binding="{Binding Info.Max}"></DataGridTextColumn>
<DataGridTextColumn IsReadOnly="True" CanUserSort="False" HeaderStyle="{StaticResource UnitStyle}" Width="*" Binding="{Binding Info.Unit}"></DataGridTextColumn>
</DataGrid.Columns>
<DataGrid.ContextMenu>
<ContextMenu StaysOpen="true" Background="Cornsilk" >
<ContextMenu.BitmapEffect>
<OuterGlowBitmapEffect />
</ContextMenu.BitmapEffect>
<MenuItem Header="{DynamicResource Monitor}" Command="{Binding MonitorSelectCommand}" >
<MenuItem.Icon>
<Image Width="32" Height="32" Source="/HandyControlExamples;component/Res/Img/1.jpg"/>
</MenuItem.Icon>
</MenuItem>
<Separator/>
<MenuItem Header="{DynamicResource CancelMonitor}" Command="{Binding UnMonitorSelectCommand}">
<MenuItem.Icon>
<Image Width="32" Height="32" Source="/HandyControlExamples;component/Res/Img/2.jpg"/>
</MenuItem.Icon>
</MenuItem>
</ContextMenu>
</DataGrid.ContextMenu>
</DataGrid>
后台:使用的是Prism MVVM
public DelegateCommand<int?> MonitorUnCheckedCommand => new DelegateCommand<int?>(MonitorUnCheckedCommand_sub);
private void MonitorUnCheckedCommand_sub(int? tableIndex)
{
if (tableIndex != null)
{
//........
}
}
效果截图:
2020年05月29日 10点05分 1
level 1
已解决
2020年05月29日 13点05分 2
level 1
怎么解决的?
2020年10月30日 05点10分 3
1