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