依赖项属性更改的回调是否会返回意外的依赖项对象

本文关键字:依赖 返回 意外 对象 回调 属性 是否 | 更新日期: 2023-09-27 18:36:01

我在 MyObject 类型的 DependencyProperty 上注册回调通知。 在该函数中,我执行从 DependencyObject 到我预期的 MyObject 类型的强制转换。 这会返回空吗? 我可以安全地从代码中删除空检查吗?

private static void OnMyObjectChanged(DependencyObject d,
    DependencyPropertyChangedEventArgs e)
{
    MyObject obj = d as MyObject;
    if (obj != null) // Is this check needed?  Will it ever be null?
    {
        ...
    }
}

依赖项属性更改的回调是否会返回意外的依赖项对象

你可能的意思是:

private static void OnMyObjectChanged(
    DependencyObject d, DependencyPropertyChangedEventArgs e)
{
    var obj = d as MyObject;
    if (obj != null)
    {
        ...
    }
}

只要这不是附加属性的 PropertyChangedCallback(可能应用于任何派生类型的 DependencyObjects),就可以安全地将 DependencyObject 参数直接强制转换为对象类型。它是属性的回调,WPF 从不为任何其他属性调用它。

所以只需写:

private static void OnMyObjectChanged(
    DependencyObject d, DependencyPropertyChangedEventArgs e)
{
    var obj = (MyObject)d;
    ...
}