2015-10-23 3 views
0

В Windows 8.1, я могу сделать этоКак использовать х: Bind без какого-либо имущества

<Grid Margin="8" 
     VerticalAlignment="Bottom" 
     Tapped="Grid_OnTapped" 
     Tag="{Binding}"></Grid> 

затем внутри события Grid_OnTapped, я могу использовать свойство Tag из сетки, чтобы узнать, какой элемент сливают.

Но когда вы меняете x: Bind, он больше не работает. Исключение забросил: «Ссылка на объект не указывает на экземпляр объекта»

Кроме того теста, этот код будет отображаться имя класса

<TextBlock Text="{x:Bind}/> 

Но это единственное, что работа

Пожалуйста Помогите. Спасибо

+0

Не могли бы вы показать код своего конструктора? – Herdo

ответ

1

{x:Bind} предназначен для связывания со свойствами в с кодом. Он имеет преимущество по сравнению с {Binding}, поскольку нормальное связывание использует отражение для поиска свойств, тогда как x:Bind - нет. x:Bind будет привязан к строго типизированным свойствам кода.

Как правило, вы должны использовать x:Bind, чтобы получить производительность в XAML.

В вашем случае было бы лучше связать с DataContext вместо этого, в вашем случае это всего лишь {Binding}. Это то, что вы уже делали ранее.

Возможно, вы неправильно поняли использование x:Bind? Вот article, объясняющий, как его использовать.

+0

Спасибо. Я неправильно понял x: Bind. Думал, что это замена {Binding}. Оказывается, это совершенно новый механизм. –

+0

Возможно, гораздо более важным усовершенствованием '{x: Bind}' over '{Binding}' является аспект ремонтопригодности. Он выполняет ** проверку времени компиляции **, улавливая ошибки как можно раньше. Также стоит отметить: '{x: Bind}' также можно использовать с функциями. Это не только для свойств (см. Расширение разметки [{x: Bind}] (https://msdn.microsoft.com/en-us/windows/uwp/xaml-platform/x-bind-markup-extension)). – IInspectable