Как избежать косой черты в пути привязки WPF или как обойти? - PullRequest
9 голосов
/ 17 июля 2011

Я только изучаю WPF и скопировал таблицу из источника данных в окно, которое генерировало XAML для каждого столбца.

У некоторых из этих столбцов были имена, которые вызывали следующее:

<DataGridTextColumn x:Name="_Rev_UnitColumn" Binding="{Binding Path=Rev/Unit}" Header="Rev/Unit" Width="SizeToHeader" />

Это приводит к тому, что столбец становится пустым (как и я).

Ответы [ 2 ]

6 голосов
/ 17 июля 2011

Я (вроде случайно) попробовал:

<DataGridTextColumn x:Name="_Rev_UnitColumn" Binding="{Binding Path=[Rev/Unit]}" Header="Rev/Unit" Width="SizeToHeader" />

И в результате все заработало так, как я ожидал.Смотря на это снова, я предполагаю, что цитата MSB HB говорит мне об этом.Когда я прочитал это (первоначально в MSDN, прежде чем я даже опубликовал этот вопрос, потом снова здесь), я просто не понял, что " Внутри индексаторов --comma-- символ вставки (^) экранирует следующий символ "имел в виду.

6 голосов
/ 17 июля 2011

В MSDN есть статья о путях свойств , в которой есть раздел о escape-символах:

Внутри индексаторов ([]) символ вставки (^) экранирует следующий символ.

Вы должны экранировать (используя объекты XML) определенные символы, которые являются специальными для определения языка XML. Используйте &, чтобы убежать от символа «&». Используйте> для экранирования конечного тега ">".

Вы должны экранировать (используя обратную косую черту \) символы, которые являются специальными для поведения анализатора WPF XAML для обработки расширения разметки.

  • Обратная косая черта (\) - это сам символ перехода.
  • Знак равенства (=) отделяет имя свойства от значения свойства.
  • Запятая (,) разделяет свойства.
  • Правая фигурная скобка (}) является концом расширения разметки.

Косая черта здесь не указана, поэтому я не знаю, сработает ли обратная косая черта, но вы можете попробовать.

(Как точно у вас есть такое имя свойства? Кажется, что оно недопустимо как в XML, так и в C #)

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