Скомпилированные привязки в формах Xamarin

#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>
  

Более подробная информация о выполненных привязках, пожалуйста, ознакомьтесь:

https://learn.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/data-binding/compiled-bindings