почему Enum в DependencyProperty возвращает первое значение из Enum? - PullRequest
1 голос
/ 21 сентября 2011

Я пытался использовать Enum в DependencyProperty, но он всегда принимает первое значение Enum.

например. Мой Enum:

public enum LayoutType
{
     Horizontal,
     Vertical
}

декларация о недвижимости:

public static readonly DependencyProperty LayoutTypeProperty =
      DependencyProperty.RegisterAttached("LayoutType", typeof(LayoutType), typeof(ctrlAllLayouts), new PropertyMetadata(null));

Я могу получить доступ к свойству в моем xaml, но проблема в том, что оно всегда дает значение «Горизонтально», если установлено значение «Горизонтально» или «Вертикально».

1 Ответ

0 голосов
/ 21 сентября 2011

С Присоединенные свойства (это не простые свойства зависимости, как вы использовали RegisterAttached), вы также должны объявить соответствующие статические методы установки и получения для его анализа. Парсер Xaml фактически использует эти методы.

, например

public static void SetLayoutType(DependencyObject element, LayoutType value)
{
    element.SetValue(LayoutTypeProperty, value);
}
public static LayoutType GetLayoutType(DependencyObject element)
{
    return (LayoutType)element.GetValue(LayoutTypeProperty);
}

Если эти методы отсутствуют и поскольку вы не задаете значение по умолчанию в PropertyMetadata, оно всегда будет установлено равным 0, что является значением вашего первого перечисления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...