Привязка к словарю - с ключом '(' - PullRequest
3 голосов
/ 01 марта 2012

У меня есть шаблоны данных, которые выглядят так:

<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.Есть ли способ разрешить связывание словаря работать с другими строками, такими как ')'?Какая-нибудь последовательность escape-символов?

1 Ответ

2 голосов
/ 01 марта 2012

Вы можете создать правильный путь, используя параметры пути , это гарантирует, что скобка будет передана как строка, а не как часть описания пути.Самый простой способ сделать это, вероятно, был бы через пользовательское расширение разметки, как показано в моего ответа моего.

Тогда привязка может быть записана как:

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

(кавычки вокруг скобок являются необязательными, но я думаю, что они более читабельны)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...