检测用户控件中的DataContext更改

时间:2013-11-16 23:11:50

标签: c# xaml windows-phone-7 windows-phone-8

我正在实现UserControl,我想检测DataContext是否已从代码中更改。 FrameworkElement.DataContext.Get不是虚拟的,所以我不能覆盖它。我可以用new隐藏它,但我相信有更好的方法可以做到这一点。在WPF中有类似DataContextChanged事件的东西。我们可以用Windows Phone做类似的事吗?

3 个答案:

答案 0 :(得分:3)

在您的用户控件构造函数中添加:

this.SetBinding(BoundDataContextProperty, new Binding());

然后添加以下内容:

public static readonly DependencyProperty BoundDataContextProperty = DependencyProperty.Register(
    "BoundDataContext",
    typeof(object),
    typeof(MyUserControl),
    new PropertyMetadata(null, OnBoundDataContextChanged));

private static void OnBoundDataContextChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
    // e.NewValue is your new DataContext
    // d is your UserControl
}

答案 1 :(得分:0)

您正在寻找类似PropertyChangedNotifier

的内容

答案 2 :(得分:0)

注册到 frameworkelement.datacontextchanged 事件

你可以在这里找到答案, https://docs.microsoft.com/en-us/dotnet/api/system.windows.frameworkelement.datacontextchanged?view=net-5.0