绑定到字典-使用键';(';

本文关键字:字典 绑定 | 更新日期: 2023-09-27 18:26:24

我的数据模板看起来像:

<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与其他字符串(如")")一起使用?某种转义符序列?

绑定到字典-使用键';(';

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

绑定可以写成:

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

(括号周围的引号是可选的,但我认为它更可读)