自定义控件:继承的依赖属性发生变化时如何调用方法?

Sea*_*eil 1 .net c# wpf xaml uwp

我正在编写一个继承 ItemsControl 的自定义控件。每当某些属性发生变化时,我需要调用一个方法。对于我自己的依赖属性,我可以在设置器中调用它,没有问题,但对于像 ItemsSource 这样的继承属性,我不知道如何执行此操作,我想了解如何在不覆盖整个事物的情况下执行此操作。

在搜索此内容时,我看到提到这至少可以通过 WPF 中的 OverrideMetadata 来完成(我的项目是 UWP)。我看到了如何使用 OverrideMetadata 来更改默认值,但我没有看到它如何用作属性更改通知。

Jus*_* XL 5

UWP 中有一个名为RegisterPropertyChangedCallback“Designed just for this”的新方法。例如,以下是我如何删除扩展GridView控件中的默认入口过渡。

// Remove the default entrance transition if existed.
RegisterPropertyChangedCallback(ItemContainerTransitionsProperty, (s, e) =>
{
    var entranceThemeTransition = ItemContainerTransitions.OfType<EntranceThemeTransition>().SingleOrDefault();
    if (entranceThemeTransition != null)
    {
        ItemContainerTransitions.Remove(entranceThemeTransition);
    }
})
Run Code Online (Sandbox Code Playgroud)

您可以使用 取消注册UnregisterPropertyChangedCallback

更多信息可以在这里找到。