我正在实现一个 UserControl
, 我想要检测代码中的 DataContext 是否改变。但是 FrameworkElement.DataContext.Get
不是虚方法,所以我不能重写它。我可以用 new
隐藏它,但我相信有更好的方法来解决这个问题。在 WPF 中有类似 DataContextChanged 事件的东西。我们能否在 Windows Phone 上做类似的事情?
我正在实现一个 UserControl
, 我想要检测代码中的 DataContext 是否改变。但是 FrameworkElement.DataContext.Get
不是虚方法,所以我不能重写它。我可以用 new
隐藏它,但我相信有更好的方法来解决这个问题。在 WPF 中有类似 DataContextChanged 事件的东西。我们能否在 Windows Phone 上做类似的事情?
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
}
UserControl类有内部事件UserControl_DataContextChanged,可用于订阅此目的
<UserControl
DataContextChanged="UserControl_DataContextChanged">
注册到FrameworkElement.DataContextChanged事件
您可以在此处找到答案, https://learn.microsoft.com/en-us/dotnet/api/system.windows.frameworkelement.datacontextchanged?view=net-5.0