Как использовать x:Bind без каких-либо свойств

В Windows 8.1 я могу это сделать

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

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

Но при переходе на x:Bind это уже не работает. Возникло исключение: «Ссылка на объект не указывает на экземпляр объекта»

Дальнейший тест, этот код будет отображать имя класса

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

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

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


person Tuan Tran    schedule 23.10.2015    source источник
comment
Не могли бы вы показать код вашего конструктора?   -  person Herdo    schedule 23.10.2015


Ответы (1)


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

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

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

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

person Mike Eason    schedule 23.10.2015
comment
Спасибо. Я неправильно понял x: Bind. Думал, что это замена {Binding}. Оказывается, это совершенно новый механизм. - person Tuan Tran; 24.10.2015
comment
Возможно, гораздо более важным улучшением {x:Bind} по сравнению с {Binding} является аспект удобства сопровождения. Он выполняет проверку во время компиляции, выявляя ошибки как можно раньше. Также стоит отметить: {x:Bind} также можно использовать с функциями. Это касается не только свойств (см. расширение разметки {x:Bind}). - person IInspectable; 24.06.2016