gpt4 book ai didi

c# - 为 WPF UserControl 加载后会发生什么事件?

转载 作者:太空狗 更新时间:2023-10-30 00:27:19 34 4
gpt4 key购买 nike

我有一个 DataGrid,我将其绑定(bind)到我的 UserControl 的构造函数中(在 InitializeComponent 之后)。我需要访问其中的一些行,所以在 UserControl 的加载事件中,我运行:

DataGridRow row = (DataGridRow)myDataGrid.ItemContainerGenerator.ContainerFromIndex(rowIdx);

但是,每当我这样做时,ItemContainerGenerator.ContainerFromIndex 都会返回 null。似乎 DataGrid 还没有完全生成,所以为了测试/确认这个理论,我在屏幕上放了一个按钮,在按钮的点击事件上,我再次运行该代码,然后果然,该行有一个值。因此,可以确认,当 UserControl 的加载事件触发时,它发生得太早了,我还不能为我的 DataGrid 调用 ItemContainerGenerator.ContainerFromIndex。

加载后我可以使用什么事件触发?

注意:我也尝试了我找到的这段代码,但得到了相同的结果:

DataGridRow row = (DataGridRow)myDataGrid.ItemContainerGenerator.ContainerFromIndex(rowIdx);
if (row == null)
{
myDataGrid.UpdateLayout();
myDataGrid.ScrollIntoView(myDataGrid.Items[rowIdx]);
row = (DataGridRow)myDataGrid.ItemContainerGenerator.ContainerFromIndex(rowIdx);
}

我也尝试在 DataGrid 的加载事件中执行此操作,但结果相同。

谢谢!

最佳答案

您可以在较低的 DispatcherPriority 运行该代码比 Loaded,例如 Input

例如,DataGrid 的 Loaded 事件将包含如下内容:

MyDataGrid.Dispatcher.BeginInvoke(DispatcherPriority.Input,
new Action(delegate() { RunSomeFunction(); } ));

关于c# - 为 WPF UserControl 加载后会发生什么事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7016605/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com