所有,我正在根据 aStatusBar
中选择的行数更新 a DataGrid
。我正在使用 MVVM 执行此操作。相关XAML如下
<DataGrid Grid.Row="1" AlternatingRowBackground="Gainsboro" AlternationCount="2"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
AutoGenerateColumns="False" RowHeaderWidth="0" IsReadOnly="True"
CanUserAddRows="False" CanUserDeleteRows="False" SelectionMode="Extended"
EnableRowVirtualization="False" ItemsSource="{Binding Cultures}">
<DataGrid.Columns>
<DataGridTextColumn Header="Code" Binding="{Binding Code}" IsReadOnly="True"/>
<DataGridTextColumn Header="Language" Binding="{Binding Language}" IsReadOnly="True"/>
<DataGridTextColumn Header="LocalName" Binding="{Binding LocalName}" IsReadOnly="True"/>
</DataGrid.Columns>
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
</Style>
</DataGrid.RowStyle>
</DataGrid>
由StatusBar
定义
<StatusBar Grid.Row="1" Margin="0,0.4,0.4,-0.4">
<StatusBarItem DockPanel.Dock="Left" Background="#FF007ACC" Margin="0,2,0,0">
<TextBlock Text="{Binding TotalSelectedCultures}" Margin="5,0,0,0" Foreground="White"/>
</StatusBarItem>
</StatusBar>
我包含此代码,以便您可以看到我在DataGrid
;上设置的选项 正如我所说,[在使用鼠标选择行时,选择的行数在StatusBar
's中更新TextBlock
] 的功能正在工作。有关我用来执行此操作的基本机制的更多信息,请参阅https://stackoverflow.com/a/2615487/626442。
现在,当我选择许多项目时,我注意到第一列 [称为“代码”] 没有正确显示/渲染(如图所示,其中一半被裁剪掉了)。
我已经设置EnableRowVirtualization="False"
了,否则它只是平面不起作用,但为什么现在我的第一列没有正确渲染,我该如何让它正确渲染?
谢谢你的时间。
笔记。我试图设置EnableColumnVirtualization="False"
,但这似乎更糟!?我也设置了两者EnableColumnVirtualization="True"
,EnableRowVirtualization="True"
这大大提高了性能并消除了渲染问题。但是,这会破坏StatusBar
更新,它只会在视图滚动时停止。