绑定到字典 - 用的关键“(”
问题描述:
我有数据模板,看起来像:绑定到字典 - 用的关键“(”
<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和其他字符串一起工作,如')'?某种转义字符序列?
答
您可以使用path parameters构造有效路径,这可以确保括号作为字符串传递而不是路径描述的一部分。最简单的方法可能是通过自定义标记扩展,如我的this answer所示。
的结合则可以写成:
{Binding Path={me:PathConstructor Fields[(0)],')'}}
(约括号行情是可选的,但是,使其更具可读性,我认为)
+0
谢谢,这有助于指引我朝着正确的方向前进。我想最后真正的问题是一些字典元素在其中有前导/尾随空格。此PathConstructor格式可帮助解决此问题。 – 2012-03-01 22:24:35
你尝试用\ – BlueM 2012-03-01 17:28:20
我会试图逃跑直接通过转换器,看看是否不会绕过这个分析异常。或者用Linq转换strOut = dl.FirstOrDefault(kvp => kvp.Key ==“(”).Value;在知道丑陋的情况下,如果它的效果比没有好 – Paparazzi 2012-03-01 17:38:31
@BlueM:这没有帮助 – 2012-03-01 17:38:47