如何知道绑定何时完成



当我将DataGrid上的. itemsource()属性设置为Collection时,调用返回得很快,但实际绑定发生在之后。因为我想要显示一个等待的光标,所以我需要检测实际绑定何时完成。这有什么活动吗?

任何基于ItemsControl的控件都使用ItemContainerGenerator在后台生成它的项。您可以访问DataGrid的ItemContainerGenerator属性,并连接StatusChanged事件以确定何时完成。如果您正在使用虚拟化和滚动,这将再次触发,因此您需要在必要时处理这个问题。

我等待我的DataGridLoaded事件触发,我做了一个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);
    }

最新更新