我有一个DataGrid
,其ID从上到下以升序显示。但是,最后一个id(最高编号)必须首先显示,但仍应显示在DataGrid
的底部。这意味着您必须滚动到顶部才能显示旧ID。
是否可以在虚拟化完好无损的情况下做到这一点?
我们正在使用sfdatagrid(syncfusion)。但是,如果其他任何网格(包括wpf本地网格)都涵盖了这一点,我可以调查一下
答案 0 :(得分:4)
是否可以在虚拟化完好无损的情况下做到这一点?
是的。至少使用内置的DataGrid
控件。在创建任何容器之前,只需滚动到底部即可。请参考以下示例代码:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
numberGrid.ItemsSource = Enumerable.Range(1, 100);
numberGrid.ScrollIntoView(numberGrid.Items[numberGrid.Items.Count - 1]);
}
int n = 0;
private void DataGridRow_Loaded(object sender, RoutedEventArgs e)
{
txt.Text = (n++).ToString();
}
}
XAML:
<DataGrid x:Name="dg" Height="200">
<DataGrid.ItemContainerStyle>
<Style TargetType="DataGridRow">
<EventSetter Event="Loaded" Handler="DataGridRow_Loaded" />
</Style>
</DataGrid.ItemContainerStyle>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding}" />
</DataGrid.Columns>
</DataGrid>
<TextBlock x:Name="txt" />
可视化树中仅加载11个容器: