XAML 2009 - x: Ссылка - есть ли недостатки в использовании этого? - PullRequest
4 голосов
/ 03 февраля 2012

У меня всего несколько месяцев опыта работы с XAML, и мне часто бывает трудно определить, как связывать или ссылаться на элементы, определенные в разных местах моего XAML.Недавно я столкнулся с X: Reference, который, как я понимаю, является новым для XAML 2009 и .NET 4.

Например, предположим, что я пытаюсь привязать свойство IsChecked элемента с именем DisplayIndicator, который определен в другом месте.в моем XAML.X: Ссылка позволяет мне сделать это следующим образом:

{Binding Source={x:Reference DisplayIndicator}, Path=IsChecked}

Это кажется простым способом (и предпочтительным способом?) Ссылаться практически на любой элемент, объявленный в моем XAML.Я ошибаюсь по этому поводу?Есть ли у этого недостаток?

Большое спасибо.

Ответы [ 2 ]

4 голосов
/ 04 февраля 2012

Из x:Reference документации :

В WPF и XAML 2006 ссылки на элементы обрабатываются функцией уровня привязки ElementName. Для большинства приложений и сценариев WPF все еще следует использовать привязку ElementName. Исключения из этого общего руководства могут включать случаи, когда существуют контекст данных или другие соображения, связанные с областью применения, которые делают нецелесообразным привязку данных, и когда компиляция разметки не используется.

Я также использую x:Reference, только если ElementName не вариант. Единственное, что здесь не упомянуто, это то, что x:Reference довольно требователен к циклическим зависимостям, что не относится к ElementName; так что это будет недостатком.

3 голосов
/ 04 февраля 2012

К сожалению, вы не можете использовать функции XAML 2009 с XAML, который используется для определения визуальных элементов в приложении WPF.См. http://msdn.microsoft.com/en-us/library/ee792007.aspx:

В WPF вы можете использовать функции XAML 2009, но только для XAML, который не скомпилирован с разметкой WPF.Скомпилированный с разметкой XAML и форма XAML BAML в настоящее время не поддерживают ключевые слова и функции языка XAML 2009.

Но для x:Reference есть легкая альтернатива:

{Binding ElementName=DisplayIndicator, Path=IsChecked}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...