Datagrid UI虚拟化,最后一项显示在底部

时间:2018-08-15 09:00:45

标签: c# wpf datagrid

我有一个DataGrid,其ID从上到下以升序显示。但是,最后一个id(最高编号)必须首先显示,但仍应显示在DataGrid的底部。这意味着您必须滚动到顶部才能显示旧ID。

是否可以在虚拟化完好无损的情况下做到这一点?

我们正在使用sfdatagrid(syncfusion)。但是,如果其他任何网格(包括wpf本地网格)都涵盖了这一点,我可以调查一下

1 个答案:

答案 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个容器:

enter image description here