为什么DependencyProperty中的枚举从Enum返回第一个值?

时间:2011-09-21 13:27:48

标签: silverlight enums dependency-properties

我曾尝试在DependencyProperty中使用Enum,但它始终采用Enum的第一个值。

e.g。 我的枚举:

public enum LayoutType
{
     Horizontal,
     Vertical
}

财产声明:

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

我可以在我的xaml中访问该属性,但问题是如果将其设置为“Horizo​​ntal”或“Vertical”,它总是赋值“Horizo​​ntal”。

1 个答案:

答案 0 :(得分:0)

使用Attached Properties(这些不是普通的依赖项属性,因为您使用RegisterAttached),您还必须声明匹配的静态 setter和getter方法,以便对其进行解析。 Xaml解析器实际上使用了这些方法。

e.g。

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,这是您的第一个枚举的值。