簡體   English   中英

檢測用戶控件中的 DataContext 更改

[英]Detect DataContext change in user control

我正在實現一個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
}

您正在尋找類似這樣的PropertyChangedNotifier

注冊到 frameworkelement.datacontextchanged 事件

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM