Как преобразовать мою привязку ListView в x: Bind? - PullRequest
0 голосов
/ 14 марта 2019

Предположим, у меня есть следующий источник данных, указанный в моем приложении:

App.xaml:

<sampleData:SampleUsers x:Key="SampleUsers"
        d:IsDataSource="True" />

Как преобразовать следующие две привязки в их x: Варианты привязки ???

UsersPage.xaml.

xmlns:sampleData="using:MyApp.SampleData.SampleUsers"
.
.
.
<ListView DataContext="{Binding Source={StaticResource SampleUsers}}"
        ItemsSource="{Binding Users, Mode=OneWay}" />

Ответы [ 2 ]

2 голосов
/ 15 марта 2019
  1. Извлечь SampleUsers из кода UsersPage.xaml:

    public SampleUsers SampleUsers => new SampleUsers();
    
  2. Привязать к нему, используя {x:Bind} в XAML:

    <ListView ItemsSource="{x:Bind SampleUsers}" />
    

{x:Bind} не использует DataContext в качестве источника по умолчанию - вместо этого он использует саму страницу или пользовательский элемент управления, как указано в официальных документах .Также обратите внимание, что режимом по умолчанию является OneTime, что совершенно нормально в этом случае, если вы не сбросите свойство источника во время выполнения.

1 голос
/ 15 марта 2019

Если вы хотите использовать x: bind, вы можете связать ItemsSource, а затем объявить x:DataType для DataTemplate следующим образом.

<ListView  ItemsSource="{x:Bind SampleUsers.Users, Mode=OneWay}" >
    <ListView.ItemTemplate>
        <DataTemplate x:DataType="local:User">
            <TextBlock Text="{x:Bind Name}"
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

Обновление

Вы можете определить SampleUsers в ресурсах страницы xaml или код позади.

<Page.Resources>
    <sampleData:SampleUsers x:Key="SampleUsers"/>
</Page.Resources>

Для получения более подробной информации, пожалуйста, обратитесь к этому документу .

...