2017-03-18 52 views
4

使用枚举值我已经在C#中定义一个枚举在XAML

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,并定义值作为一个字符串,但我无法找到如何做一个很好的例子。)

+0

你尝试简单地写'值=“块”'在触发?从字符串到枚举的类型转换通常在XAML中使用。 – Clemens

+0

我相信你正确地使用它,但你可以在这里看到Enum Converter示例:https://stackoverflow.com/questions/14279602/how-can-i-use-enum-types-in-xaml –

+0

@RicardoSerra那个答案显示了一个绑定值转换器,它不应该与类型转换器混淆。但是,这里没有涉及绑定。 – Clemens

回答

6

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

所以,你可以简单地写

<Trigger Value="Block" ...>