У меня есть подкласс UserControl, который является содержимым моего главного окна. Я добавил DepedencyProperty в свой usercontrol типа ResizeMode, и обратный вызов PropertyChanged правильно устанавливает значение ResizeMode главного окна. Работает нормально. Я могу установить его из кода или из XAML, и он работает правильно.
Однако, когда я устанавливаю его из XAML, дизайнер бросает ссылку Object, не установленную для экземпляра исключения объекта, в код в обратном вызове PropertyChanged, который устанавливает изменение размера окна.
<classes:MyUserControl ResizeMode="NoResize">
<...>
</classes:MyUserControl>
Это обратный вызов. MainWindow - это ссылка на родительское окно.
private static void OnResizeModeChanged(DependencyObject o, DependencyPropertyChangedEventArgs e)
{
(o as MyUserControl).MainWindow.ResizeMode = (ResizeMode) e.NewValue;
}
public ResizeMode ResizeMode
{
get { return (ResizeMode) GetValue(ResizeModeProperty); }
set { SetValue(ResizeModeProperty, value); }
}
public static readonly DependencyProperty ResizeModeProperty =
DependencyProperty.Register("SizeToFit", typeof(ResizeMode), typeof(MyUserControl),
new UIPropertyMetadata(ResizeMode.CanResize, new PropertyChangedCallback(OnResizeModeChanged)));
Я мог бы проигнорировать это или установить его в коде, но я не совсем понимаю причину этой ошибки, и я бы предпочел установить ее в XAML.
Может ли кто-нибудь пролить свет?