依赖属性是否会更改回调是否会返回意外的DependencyObject?

时间:2016-02-24 21:01:45

标签: c# wpf

我在MyObject类型的DependencyProperty上注册了一个回调通知。在函数中,我从DependencyObject转换为我期望的MyObject类型。这会不会归零?我可以安全地从我的代码中删除空检查吗?

var referralList = CustContext.Referrals.Where(d => d.UserId ==     membershipUser.Id);
foreach (Referral referral in referralList)
{
    referral.UserId = newUser.Id;
    CustContext.Entry(referral).State = System.Data.Entity.EntityState.Modified;
}
var result = await CustContext.SaveChangesAsync();

1 个答案:

答案 0 :(得分:2)

你可能的意思是:

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

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

所以写一下:

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