修改DataContext时的Wpf事件

时间:2016-03-22 13:41:07

标签: c# wpf events binding datacontext

您知道当DataContext更改(未替换,仅修改)时,TextBox如何修改其内容?好吧,我希望像UI一样得到通知,在DataContext上有某种事件。到目前为止,我还没有找到一种方法来做到这一点,我即将放弃并简单地订阅我的DataContext中每个INotifyPropertyChanged上的所有事件。我知道DataContextChanged类中有DataContextChanging / Window,但到目前为止我要么无法使用它,要么只在DataContext中触发被完全替换。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:0)

想想被问到的是什么。如果数据上下文中的任何属性发生更改,则会触发常规事件。

哪些流程可以执行外部

分散式解决方案

属性不提供更改通知,除非他们自己手动编程这样做;因此INotifyPropertyChange是正常使用的途径。

集中解决方案

否则,单独的管理员需要反映实例,并拍摄所有属性的快照。然后在计时器上,管理器将轮询实例以获取当前快照,并将该快照与旧快照进行比较。如果检测到更改,则可以触发事件,并且新快照将替换旧的快照。

答案 1 :(得分:0)

只有在Window的DataContext完全更改(设置为null或新实例等)时才会触发

DataContextChanged事件。我相信你走的是正确的道路,在你的ViewModel中,你需要订阅NotifyPropertyChanged。在事件处理程序中,您可以像这样打开相应的属性:

private void OnNotifyPropertyChanged(object sender, PropertyChangedEventArgs e)
{
    switch (e.Property)
    {
        case "Property1":
            break;
        case "Property2":
            break;
        case "Property3":
            break;
    }
}