在我的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;
那么如何将国家/地区绑定到外部的ItemsSource?这个国家是我的“代码背后”phoneApplicationPage的访问者。
答案 0 :(得分:0)
最好制作模型,以便在模板内部只需绑定到该项目模型。
无论如何,也可以在itemSource之外进行绑定:
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的datacontext应该在cs:
中的某个地方设置LayoutRoot.DataContext = this;