2

我添加了一个Pivot Control和三个。每个都有一个原样。每个都有一个字符串属性。我想编辑,创建 a并将其属性绑定到,但由于某种原因它不起作用。我确定这是因为 的为空,但我认为它会从特定的. 这是标题模板的代码。PivotItemsBlendPivotItemViewModelDataContextViewModelTitleHeader TemplateTextBlockTextTitleDataContextHeader TemplatePivotItemxaml

    <DataTemplate x:Key="HeaderTemplate">
        <Grid Height="47" Width="354">
            <TextBlock Margin="8,0,64,8" TextWrapping="Wrap" Text="{Binding Title}" d:LayoutOverrides="Width" FontSize="24" Foreground="Red"/>
        </Grid>
    </DataTemplate>



    <controls:Pivot TitleTemplate="{StaticResource TitleTemplate}" HeaderTemplate="{StaticResource HeaderTemplate}">
        <!--Pivot item one-->
        <controls:PivotItem DataContext="{Binding Home, Mode=OneWay}">
            <Grid>
                <ListBox x:Name="listBox" ItemsPanel="{StaticResource HomeItemsPanel}" ItemTemplate="{StaticResource HomeItemTemplate}" ItemsSource="{Binding Tiles}">
                    <i:Interaction.Triggers>
                        <i:EventTrigger EventName="SelectionChanged">
                            <GalaSoft_MvvmLight_Command:EventToCommand Command="{Binding OnSelectionChanged}" CommandParameter="{Binding SelectedIndex, ElementName=listBox}"/>
                        </i:EventTrigger>
                    </i:Interaction.Triggers>
                </ListBox>
            </Grid>
        </controls:PivotItem>
        <controls:PivotItem Margin="0,8,0,1">
            <Grid/>
        </controls:PivotItem>

        <!--Pivot item two-->
        <controls:PivotItem DataContext="{Binding More, Mode=OneWay}">
            <Grid/>
        </controls:PivotItem>
    </controls:Pivot>

我想创建一个更复杂的东西Header Template,但现在我正在测试是否可以绑定它,然后再继续处理不仅仅是 TextBlock 的东西。我知道我可以使用 a Listof ViewModelsPivotControl.ItemSource但是我必须使用 aDataTemplateSelector等等,我不希望那样。

所以我想我的问题是这样的,我怎样才能让 HeaderTemplate 继承相应的 DataContext PivotItem?谢谢你。

4

1 回答 1

2

那是行不通的。您应该按以下方式编写 HeaderTemplate:

<controls:Pivot.HeaderTemplate>
    <DataTemplate>
        <TextBlock Text="{Binding}" />
    </DataTemplate>
</controls:Pivot.HeaderTemplate>

Textblock 将从 PivotItem 的 Header 属性接收绑定。对于每个 PivotItem,您绑定其 Header:

<controls:PivotItem Header="{Binding Title}">
    <Grid/>
</controls:PivotItem>

唯一的问题仍然是将每个数据透视项绑定到它自己的数据上下文。您可以使用以下代码为每个项目手动执行此操作:

<controls:PivotItem DataContext="{Binding Item1}" Header="{Binding Title}">
    <Grid/>
</controls:PivotItem>
<controls:PivotItem DataContext="{Binding Item2}" Header="{Binding Title}">
    <Grid/>
</controls:PivotItem>
于 2013-03-19T18:14:06.380 回答