Я изучаю WPF и пытаюсь создать свой первый UserControl. Мой UserControl состоит из
- StackPanel
- StackPanel содержит Label и TextBox
Я пытаюсь создать два свойства зависимости
- Текст для ярлыка
- Ориентация для StackPanel - Ориентация будет эффективно влиять на положение Label и TextBox
Я успешно создал свойство зависимостей Text и связал его с моими пользовательскими элементами управления. Но когда я создал свойство Orientation, я, кажется, получаю следующую ошибку в get property
Оператор as должен использоваться с ссылочным типом или обнуляемым типом ('System.Windows.Controls.Orientation' - это тип значения, не обнуляемый)
public static DependencyProperty OrientationProperty = DependencyProperty.Register("Orientation", typeof(System.Windows.Controls.Orientation), typeof(MyControl), new PropertyMetadata((System.Windows.Controls.Orientation)(Orientation.Horizontal)));
public Orientation Orientation
{
get { return GetValue(OrientationProperty) as System.Windows.Controls.Orientation; }
set { SetValue(OrientationProperty, value); }
}
Ценю вашу помощь.
Edit:
Я изменил код, как показано ниже, и он, кажется, работает как ожидалось. Но правильный ли это способ решения проблемы?
public Orientation Orientation
{
get
{
Orientation? o = GetValue(OrientationProperty) as System.Windows.Controls.Orientation?;
if (o.HasValue)
{
return (System.Windows.Controls.Orientation)o.Value;
}
else
{
return Orientation.Horizontal;
}
}
set { SetValue(OrientationProperty, value); }
}