在WP8.1中绑定pivotitem内容

时间:2015-02-03 21:18:02

标签: windows-phone-8.1 winrt-xaml

在我的mainpage.xaml中,我有一个支点控件:

<Pivot x:Name="Pivot" 
  ItemsSource="{Binding PivotItems}" 
  ItemTemplate="{StaticResource PivotItemTemplate}">
</Pivot>

将其项目绑定到我的viewmodel上的 PivotsItems 属性。 pivotitems显示正确,但我无法绑定pivotitem的内容。

我的datatemplate看起来像:

<DataTemplate x:Key="PivotItemTemplate">
    <PivotItem>
        <TextBlock Text="Test"></TextBlock>
    </PivotItem>
</DataTemplate>

但是没有任何内容显示在任何pivotitem中。

我要做的是绑定pivotitems(有效),但为每个pivotitem显示一个单独的过滤器。在这个例子中,我只想在每个pivotitem中显示一个TextBlock。

解决:

我在页面中的pivot控件上定义了itemtemplate,而在填充vm中的列表时我必须添加它:

PivotItems.Add(new PivotItem { Header = item.Key, ContentTemplate = App.Current.Resources["PivotItemTemplate"] as DataTemplate });

1 个答案:

答案 0 :(得分:2)

Pivot自动将它的项目包装到PivotItems中(就像你不将ListViewItem添加到ListViews ItemsTemplate一样)。只需将您的内容放入DataTemplate。

<DataTemplate x:Key="PivotItemTemplate">
    <TextBlock Text="Test"></TextBlock>
</DataTemplate>

标头默认为PivotItem的DataContext(因此您的列表项)。如果您希望它显示某个属性,您还必须设置HeaderTemplate:

<DataTemplate>
    <TextBlock Text="{Binding MyProperty}" />
</DataTemplate>

如果您只是将其保留为没有其他属性的TextBlock,则可以完美地应用默认样式。