我曾尝试在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中访问该属性,但问题是如果将其设置为“Horizontal”或“Vertical”,它总是赋值“Horizontal”。
答案 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,这是您的第一个枚举的值。