我有一個Pivot Control
和三個PivotItems
加入Blend
。每個PivotItem
有ViewModel
,因爲它是DataContext
。每個ViewModel
都有一個字符串屬性Title
。我想編輯Header Template
,創建一個TextBlock
並將它的Text
屬性綁定到Title
,但由於某些原因它不起作用。我確信這是因爲Header Template
的DataContext
爲空,但我認爲它會從特定的PivotItem
繼承。這是標題模板的xaml
代碼。綁定樞軸頁眉模板
<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更出發之前。我知道我可以使用List
的ViewModels
作爲PivotControl.ItemSource
,但是之後我將不得不使用DataTemplateSelector
等等,我不想那樣做。
所以我想我的問題是,我怎麼能使HeaderTemplate繼承根據PivotItem
的DataContext? 謝謝。
您是否嘗試過使用元素綁定? – 2013-03-18 18:34:28
我不確定你的意思。 – Cosmin 2013-03-18 19:07:49