如何将我的ListView绑定转换为x:Bind?

时间:2019-03-14 17:09:22

标签: xaml uwp uwp-xaml xbind

假设我在应用中指定了以下示例数据源:

App.xaml:

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

如何将以下两个绑定转换为它们的x:Bind变量?

UsersPage.xaml。

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

2 个答案:

答案 0 :(得分:2)

  1. SampleUsers的隐藏代码中暴露UsersPage.xaml

    public SampleUsers SampleUsers => new SampleUsers();
    
  2. 在XAML中使用{x:Bind}对其进行绑定:

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

{x:Bind}并不使用DataContext作为默认源,而是使用official docs中所述的页面或用户控件本身。另请注意,默认模式为OneTime,在这种情况下,假设您在运行时未重置source属性,这是完全可以的。

答案 1 :(得分:1)

如果要使用x:bind,可以绑定ItemsSource,然后为DataTemplate声明x x:DataType,如下所示。

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

更新

您可以在xaml页面资源或后面的代码中定义SampleUsers

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

有关更多详细信息,请参阅此document