Я изучаю WPF и пытаюсь создать свой первый UserControl. Моя UserControl состоит изDependencyProperty Ориентация проблемы
- StackPanel
- StackPanel содержит метку и TextBox
Я пытаюсь создать два свойства зависимостей
- Текст для этикетки
- ориентации для StackPanel - ориентация влияет на положение метки и текстового блока эффективно
Я успешно создал свойство зависимостей и связал его с моим UserControls. Но когда я создал свойство Orientation, я, кажется, чтобы получить следующие ошибки в получить свойство
Туз оператор должен быть использован с ссылочного типа или обнуляемого типа («System.Windows.Controls.Orientation» не является -nullable тип значения)
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); }
}
Цените вашу помощь.
Редактировать: Я изменил код, как показано ниже, и он работает как ожидалось. Но является ли это правильным способом решения проблемы?
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); }
}
избили меня :) –
Я только что добавил изменения, внесенные в код. Не могли бы вы прокомментировать мои изменения? Должен ли я нарисовать или использовать метод, который я использовал? – byte
Просто используйте актерский состав. Ваше свойство не допускает значения NULL. (Вы не определили свойство зависимостей как Ориентация ?, и вы не определили свою собственность как Ориентацию?, Поэтому нет ключевого слова as.Тем более, что вы указываете значение Orientation по умолчанию. Горизонтальное определение свойства Dependency, поэтому нет неопределенности. –