2012-12-04 26 views
2

我試圖綁定到字典中鍵爲enum的條目。我諮詢了this question,但答案不適用於我。這裏是我的代碼的非樣板部分:將數據綁定到以enums爲鍵的字典中的條目


SomePage.xaml:

<!-- Here I try all the ways I can think of. None of them produce any text --> 
<TextBlock Text="{Binding Data[0]}" /> 
<TextBlock Text="{Binding Data[EnumValueA]}" /> 
<TextBlock Text="{Binding Data[SomeEnum.EnumValueA]}" /> 
<TextBlock Text="{Binding Data[(local:SomeEnum)EnumValueA]}" /> 
<TextBlock Text="{Binding Data[(local:SomeEnum)SomeEnum.EnumValueA]}" /> 

SomePage.xaml.cs:

public SomePage() { 
    DataContext = new SomeVM(); 
    InitializeComponent(); 
} 

SomeVM.cs:

public enum SomeEnum { 
    EnumValueA, EnumValueB 
} 
public class SomeVM { 
    public Dictionary<SomeEnum, int> Data { get; private set; } 
    public SomeVM() { 
     Data = new Dictionary<SomeEnum, int> { 
      {SomeEnum.EnumValueA, 1337} 
     }; 
    } 
} 

這個數據綁定爲什麼不起作用?

+0

你試過'' –

+0

@HamletHakobyan:添加'Path ='明確失敗以及 – Eric

回答

1

這是不可能的。見http://msdn.microsoft.com/en-us/library/cc645024(v=vs.95).aspx#indexdata

索引

索引器可用於路徑訪問屬性並從列表中獲得 項目,但也有一些明顯的限制:

  • 列表項
  • 數字整數索引器被支持。
  • 從Silverlight 4開始,支持字符串索引器。
  • 僅支持一維數組索引。

被索引的類型必須實現或繼承IList。 (List是 接受的,因爲它實現IList然而IList的不 接受。)

數值整數索引指定由屬性名稱後宣佈括號內從零開始 指數([])字符;例如, 僱員[2]。

屬性路徑評估首先嚐試對 集合使用整數索引。如果該索引對集合無效,則[]內的信息將作爲字符串處理。來自 屬性路徑的字符串索引通常需要一個集合/業務對象 包含字符串鍵的字典。字符串索引支持綁定到 動態數據對象,其中數據源的CLR結構可以更改爲 ,但字符串鍵表示仍然可以由客戶端UI綁定到 的數據合約。

驗證使用索引器訪問附屬屬性的 集合的項目,作爲其屬性路徑使用的一部分。應用程序的驗證 結構可以聲明僅在發生驗證錯誤時才使用的模板 中的UI狀態,然後 可以在該上下文中引用活動錯誤對象。例如,以下 是用於訪問驗證中第一個 項目的綁定的屬性路徑。錯誤收集;物業 的上下文路徑是通過的RelativeSource修改,以便將錯誤上應用的模板只 檢查在運行時:

<TextBlock Text="{Binding RelativeSource={RelativeSource 
    TemplatedParent}, Path=(Validation.Errors)[0].Exception.Message }"> 
+0

Drat。我一直忘記WPF不是silverlight – Eric

相關問題