2012-03-01 89 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