1

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

4

1 回答 1

0

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

无论如何,也可以在 itemSource 之外进行绑定:

xml:

<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;
于 2014-07-24T08:33:50.830 回答