Будет ли свойство зависимости, измененное обратным вызовом, когда-либо возвращать неожиданный объект DependencyObject?
Я регистрируюсь для уведомления об обратном вызове в DependencyProperty типа MyObject. В этой функции я выполняю приведение из 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?
{
...
}
}
1 ответ
Решение
Что вы, вероятно, имеете в виду, это:
private static void OnMyObjectChanged(
DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var obj = d as MyObject;
if (obj != null)
{
...
}
}
Пока это не PropertyChangedCallback присоединенного свойства (которое может быть применено к объектам DependencyObject любого производного типа), можно безопасно напрямую привести параметр DependencyObject к типу вашего объекта. Это обратный вызов вашей собственности, и WPF никогда не вызывает его для какой-либо другой собственности.
Так что просто напишите:
private static void OnMyObjectChanged(
DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var obj = (MyObject)d;
...
}