绑定外部项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中的访问者。
最好制作模型,以便在模板内部只绑定到该项模型。
无论如何,也可以在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;