在XAML中使用枚举值

时间:2017-03-18 10:16:54

标签: c# wpf xaml enums

我在C#中定义了一个枚举

public enum PointerStyle
{
  Pointer,
  Block,
  Slider
} ;

我将它用作WPF自定义控件的依赖项属性

public static DependencyProperty DisplayStyleProperty =
    DependencyProperty.Register("DisplayStyle", typeof(PointerStyle), typeof(Pointer), new PropertyMetadata(PointerStyle.Pointer));

public PointerStyle DisplayStyle
{
  get { return (PointerStyle)GetValue(DisplayStyleProperty); }
  set { SetValue(DisplayStyleProperty, value); }
}

并在ControlTemplate中使用它

<Trigger Property="DisplayStyle" Value="{x:Static local:PointerStyle.Block}">

很多时候,但并非总是如此,编辑器强调了大部分代码并显示错误“'Block'不是属性'DisplayStype'的有效值。”如下面的屏幕截图所示

enter image description here

这是在Visual Studio 2015中。

在运行时,代码完美运行 在我的测试程序的设计窗口中,控件完全错误地呈现。

我做错了什么? 在XAML中引用枚举值的最佳方法是什么?

(我很乐意使用TypeConverter并将值定义为字符串,但我找不到如何做的好例子。)

1 个答案:

答案 0 :(得分:7)

WPF已经提供了从字符串到枚举类型的内置类型转换。

所以你可以简单地写一下

<Trigger Value="Block" ...>