绑定DataTemplate,Windows手机的ItemsSource

时间:2013-08-15 18:48:26

标签: c# wpf data-binding windows-phone-8 longlistselector

在我的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的访问者。

1 个答案:

答案 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;