2017-03-18 63 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" ...>