2011-04-15 73 views
12

我試圖枚舉綁定到WPF單選按鈕(由this answer啓發),但我無法找到該轉換器參數的枚舉類型:無法找到枚舉類型的靜態參考WPF

枚舉是通過以下方式

namespace Application.Models 
{ 
    public class Enums 
    { 
     public enum MySelections { one, two ,three }; 

     public MySelections CurrentSelection; 

     ... 

    } 
} 

我想現在綁定這樣的複選框(數據上下文被假設是正確的,並實現價值轉換器:)

<Window x:Class="Application.MainWindow" 
     .... 
     xnlns:models="clr-namespace:Application.Models" > 

... 
<RadioButton Content="One" 
      IsChecked="{Binding Path=CurrentSelection, Converter={StaticResource EnumToBooleanConverter}, ConverterParameter={x:Static models:Enums.MySelections.one}}" /> 
... 
定義10

問題在於{x:Static models:Enums.MySelections.one},它不斷拋出類型models:Enums.MySelections無法找到的錯誤。

如何找到我的枚舉類型?

+0

如果將枚舉定義移動到命名空間並從綁定中移除'Enum'類,它是否工作? – Jodrell 2011-04-15 12:30:00

回答

12

你可以宣佈它的類之外:

namespace Application.Models 
{ 
    public enum MySelections { one, two, three }; 

    public class Enums 
    { 
     public MySelections CurrentSelection; 

然後此XAML將工作:

.... ConverterParameter={x:Static models:MySelections.one} 

x:Static標記有固定的語法:

{x:靜態 efix:typeName.staticMemberName}

+0

只是我在想 – Jodrell 2011-04-15 12:31:26

+0

你打我吧:) – 2011-04-15 12:32:03

+0

就是這樣,謝謝。所以爲了澄清一下,這個枚舉現在在哪裏?一個名稱空間的靜態成員? – 2011-04-15 12:39:29

34

使用「+」而不是「。」。在XAML中獲得嵌套類型:

{x:Static models:Enums+MySelections.one} 
+0

真的嗎?很酷,這是很好的知道! :) – Bruno 2011-04-15 13:59:55

+0

除了在VS2010中至少會導致設計者無法加載視圖,那麼你甚至不能看到你想要設計的東西。 – Neutrino 2012-08-16 09:08:03

+0

+1 - 適用於我。但是,它似乎不適用於x:Type。 x:Type不支持這種語法嗎? (例如{x:類型模型:Enums + MySelections}) – hashlock 2012-11-13 20:00:19