当我将DataGrid上的. itemsource()属性设置为Collection时,调用返回得很快,但实际绑定发生在之后。因为我想要显示一个等待的光标,所以我需要检测实际绑定何时完成。这有什么活动吗?
任何基于ItemsControl的控件都使用ItemContainerGenerator在后台生成它的项。您可以访问DataGrid的ItemContainerGenerator属性,并连接StatusChanged事件以确定何时完成。如果您正在使用虚拟化和滚动,这将再次触发,因此您需要在必要时处理这个问题。
我等待我的DataGrid
的Loaded
事件触发,我做了一个BeginInvoke
,像这样:
private void SubjectsList_Loaded(object sender, RoutedEventArgs e)
{
Dispatcher.BeginInvoke(DispatcherPriority.Render, new Action(() => ColorMyRows()));
}
更多的细节可以在我的回答这里:https://stackoverflow.com/a/44464630/2101117
你最好的选择是挂钩到OnPropertyChanged事件在你的窗口或用户控件。每次更新属性时触发此事件。然后检查您希望观察的实际属性并采取行动。
protected override void OnPropertyChanged(DependencyPropertyChangedEventArgs e)
{
if ("YOUR_PROPERTY_NAME".Equals(e.Property.ToString()))
{
// Take action
}
base.OnPropertyChanged(e);
}