绑定外部项DataTemplate的源,Windows phone

本文关键字:Windows phone 的源 DataTemplate 外部 绑定 | 更新日期: 2023-09-27 18:27:55

在我的Windows Phone 8中,我为此指定了LongListSelector和ItemTemplate。在后面的代码中,我为这个LongListSelector设置了ItemsSource。在项目模板中,我想将值绑定到外部ItemsSource。如何做到这一点?

<DataTemplate x:Key="template">
  <TextBlock Text="{Binding name}"/>
  <TextBlock Text="{Binding country}"/>
</DataTemplate>
...
<phone:LongListSelector x:Name="list" ItemTemplate="{StaticResource template}">
</phone:LongListSelector>

C#

string country = "Japan";
this.list.ItemsSource = items;

那么,如何将国家与外部项目源绑定?国家是我的"代码隐藏"phoneApplicationPage中的访问者。

绑定外部项DataTemplate的源,Windows phone

最好制作模型,以便在模板内部只绑定到该项模型。

无论如何,也可以在item之外绑定来源:

xaml:

<phone:PhoneApplicationPage.Resources>
    <DataTemplate x:Key="ItemTemplate">
        <StackPanel>
            <TextBlock Text="{Binding Name}"/>
            <!-- this binds to the layoutRoot's dataContext, which can be setted to be "code behind" -->
            <TextBlock Text="{Binding DataContext.Outside, ElementName=LayoutRoot}"/>
        </StackPanel>
    </DataTemplate>
</phone:PhoneApplicationPage.Resources>
<!--LayoutRoot is the root grid where all page content is placed-->
<Grid x:Name="LayoutRoot">
    <phone:LongListSelector ItemsSource="{Binding Items}"
                            IsGroupingEnabled="False"
                            ItemTemplate="{StaticResource ItemTemplate}">
    </phone:LongListSelector>
</Grid>

在cs中,你当然有属性:

public ObservableCollection<Model> Items{get; set;}
public string Outside { get; set; }

此外,layoutRoot的数据上下文应该设置在cs:中的某个位置

LayoutRoot.DataContext = this;