绑定到字典 - 键为'('

时间:2012-03-01 17:17:50

标签: c# .net wpf xaml binding

我的数据模板如下:

<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与其他字符串一起工作,比如')'?某种逃避字符序列?

1 个答案:

答案 0 :(得分:2)

您可以使用path parameters构造有效路径,这可确保括号作为字符串传递,而不是路径描述的一部分。最简单的方法可能是通过自定义标记扩展,如我this answer所示。

然后可以将绑定写为:

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

(括号内的引号是可选的,但我认为它更具可读性)