2012-03-01 90 views
3

我有數據模板,看起來像:綁定到字典 - 用的關鍵「(」

<DataTemplate> 
<TextBlock DataContext="{Binding Fields[ABC]}" Text="{Binding}"/> 
</DataTemplate> 

<DataTemplate> 
<TextBlock DataContext="{Binding Fields[)]}" Text="{Binding}"/> 
</DataTemplate> 

對於一類,看起來像

class Source { 
    public Dictionary<string, string> Fields { get; private set; } 
} 

當應用第二個模板,用DataContext綁定中的')'鍵,我得到一個XamlParseException。有沒有什麼方法可以讓Dictionary Binding和其他字符串一起工作,如')'?某種轉義字符序列?

+0

你嘗試用\ – BlueM 2012-03-01 17:28:20

+0

我會試圖逃跑直接通過轉換器,看看是否不會繞過這個分析異常。或者用Linq轉換strOut = dl.FirstOrDefault(kvp => kvp.Key ==「(」).Value;在知道醜陋的情況下,如果它的效果比沒有好 – Paparazzi 2012-03-01 17:38:31

+0

@BlueM:這沒有幫助 – 2012-03-01 17:38:47

回答

2

您可以使用path parameters構造有效路徑,這可以確保括號作爲字符串傳遞而不是路徑描述的一部分。最簡單的方法可能是通過自定義標記擴展,如我的this answer所示。

的結合則可以寫成:

{Binding Path={me:PathConstructor Fields[(0)],')'}} 

(約括號行情是可選的,但是,使其更具可讀性,我認爲)

+0

謝謝,這有助於指引我朝着正確的方向前進。我想最後真正的問題是一些字典元素在其中有前導/尾隨空格。此PathConstructor格式可幫助解決此問題。 – 2012-03-01 22:24:35