Почему реализация свойства зависимости приведет к сбою моего приложения, если я предоставлю значение по умолчанию?
Этот сегмент кода находится в объявлении класса для моего объекта UserControl. Все работает нормально - компилируется и работает отлично.
public static System.Windows.DependencyProperty DepProp
= System.Windows.DependencyProperty.Register( "Rect",
typeof(System.Windows.Shapes.Rectangle),
typeof(FooControl));
public System.Windows.Shapes.Rectangle Rect
{
get
{ return ((System.Windows.Shapes.Rectangle)(GetValue(DepProp))); }
set
{ SetValue(DepProp, value); }
}
Однако, когда я добавляю значение по умолчанию к свойству зависимости:
Код компилируется, но вылетает с фатальным исключением при попытке создать экземпляр UserControl.
Для справки, мой код теперь выглядит так - с добавленной строкой PropertyMetaData:
public static System.Windows.DependencyProperty DepProp
= System.Windows.DependencyProperty.Register( "Rect",
typeof(System.Windows.Shapes.Rectangle),
typeof(FooControl),
new System.Windows.PropertyMetadata(new System.Windows.Shapes.Rectangle()));
public System.Windows.Shapes.Rectangle Rect
{
get
{ return ((System.Windows.Shapes.Rectangle)(GetValue(DepProp))); }
set
{ SetValue(DepProp, value); }
}
Удаление PropertyMetadata из вызова Register () приводит к тому, что программа работает отлично, без сбоев или каких-либо других проблем. Но мне нужно значение по умолчанию для более позднего кода. Как я могу заставить его принять значение по умолчанию без сбоев?
При сбое в окне вывода отображаются следующие исключения:
A first chance exception of type 'System.ArgumentException' occurred in WindowsBase.dll
A first chance exception of type 'System.Reflection.TargetInvocationException' occurred in mscorlib.dll
A first chance exception of type 'System.Windows.Markup.XamlParseException' occurred in PresentationFramework.dll
Мне нужно, чтобы это заработало как можно скорее, поэтому любой совет будет потрясающим!