С синтаксисом {x:Bind}
разметки можно связать с событиями, при условии, что метод удовлетворяет следующие требования:Невозможно привязать к кнопке событиям с помощью й: Bind в DataTemplates - генерирует ошибку XAML
- Match сигнатура события.
- ИЛИ не имеют параметров.
- ИЛИ имеют одинаковое количество параметров, которые могут быть назначены из типов параметров события.
Это прекрасно работает за пределами DataTemplate. После связывания происходит внутри DataTemplate компилятор генерирует следующее сообщение об ошибке:
Xaml Internal Error error WMC9999: Object reference not set to an instance of an object.
Что такое затруднительное для привязки к событиям внутри DataTemplates?
Полный код примера here.
Фрагмент примера кода ниже - обратите внимание на первую кнопку (строка 2), и вторая кнопка (строка 6) также прекрасна. Если вы прокомментируете строку 6 и прокомментируете в строке 7, произойдет ошибка.
<StackPanel Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Button Tapped="{x:Bind Click}" Content="WORKING"/>
<ListView ItemsSource="{x:Bind Names}">
<ListView.ItemTemplate>
<DataTemplate x:DataType="local:Customer">
<Button Content="{x:Bind Title}"/>
<!--<Button Tapped="{x:Bind Clicky}" Content="{x:Bind Title}"/>-->
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackPanel>
Чтобы быть ясным, вы получаете эту ошибку xaml во время разработки или как ошибка времени выполнения? Кроме того, где действительно находится событие «Clicky»; он найден на странице datacontext страницы? – OmegaMan
Время компиляции - фактически не будет построено. 'Clicky' находится на экземпляре объекта, а не на datacontext страницы. Если бы это была Command + ICommand, я бы сделал '{Binding Clicky}' для доступа к ней –