#xaml #xamarin #xamarin.forms #data-binding
#xaml #xamarin #xamarin.forms #привязка данных
Вопрос:
Если у меня есть представление, в котором BindingContext установлен для моей ViewModel следующим образом:
<ContentPage ...>
<ContentPage.BindingContext>
<vm:AddParkingSpotViewModel />
</ContentPage.BindingContext>
И затем я привязываю значение моей записи к такому свойству, как это:
<Entry Text="{Binding Address}" .../>
Достаточно ли этого, чтобы заставить его использовать скомпилированные привязки? Или мне также нужно установить x:DataType
на элементе макета?
<Grid x:DataType="vm:AddParkingSpotViewModel">
Ответ №1:
Достаточно ли этого, чтобы заставить его использовать скомпилированные привязки? Или мне также нужно установить x:тип данных и для элемента макета?
Процесс использования скомпилированных привязок заключается в:
Включите компиляцию XAML. Для получения дополнительной информации о компиляции XAML.
Установите атрибут x:DataType для VisualElement в тип объекта, к которому будут привязываться VisualElement и его дочерние элементы.
Выражения привязки компилируются только для иерархии представлений, для которой определен атрибут x:DataType. И наоборот, любые представления в иерархии, для которых атрибут x:DataType не определен, будут использовать классические привязки.
Итак, ваш код представляет собой классические привязки, следующий код соответствует привязкам:
<ContentPage.Content>
<Grid x:DataType="vm:AddParkingSpotViewModel">
<Grid.BindingContext>
<vm:AddParkingSpotViewModel />
</Grid.BindingContext>
<Entry Text="{Binding Address}" />
</Grid>
</ContentPage.Content>
Более подробная информация о выполненных привязках, пожалуйста, ознакомьтесь: