0

ヘッダー タイトル用とサブタイトル用の 2 つのテキスト ブロックを持つカスタム ピボット ヘッダーを作成するか、すべてのピボット ページに同じ静的サブタイトルを追加します。簡単な方法は、以下の例のようにヘッダー テンプレートを定義することですが、コードで変更できるように字幕テキストを実際のコントロールにバインドするにはどうすればよいですか? 唯一のオプションがピボット コントロールを上書きすることである場合は、いくつかの例を提供してください。

<phone:Pivot.HeaderTemplate>
    <DataTemplate>
         <Grid>
              <TextBlock Text="{Binding}" /> //header
              <TextBlock Text="{Binding}" /> //subtite
         </Grid>
    </DataTemplate>
</phone:Pivot.HeaderTemplate>

ありがとう。

4

2 に答える 2

2

私はあなたが望むことをすることに成功しますが、私は解決策を誇りに思っていません...

まず、2 つの文字列を取るオブジェクトを作成しました。

public class Header
{
    public string Title { get; set; }
    public string Subtitle { get; set; }
}

次に、リソースの XAML でオブジェクトを作成します (または、ビューモデルを介してそれらをバインドできます)。

<phone:PhoneApplicationPage.Resources>
    <poc:Header x:Key="FirstHeader" Title="first" Subtitle="first subtitle"/>
    <poc:Header x:Key="SecondHeader" Title="second" Subtitle="second subtitle"/>
</phone:PhoneApplicationPage.Resources>

各ピボットアイテムにオブジェクトをバインドします。

<phone:PivotItem Header="{StaticResource FirstHeader}">

次に、Pivo​​t.HeaderTemplate を次のようにスタイルします。

<phone:Pivot.HeaderTemplate>
    <DataTemplate>
        <StackPanel Orientation="Vertical">
            <TextBlock Text="{Binding Title}" Foreground="White"/>
            <TextBlock Text="{Binding Subtitle}" FontSize="18" Foreground="White"/>
        </StackPanel>
    </DataTemplate>
</phone:Pivot.HeaderTemplate>

Pivot と PivotItem の動作を変更することでより良い解決策を実現で​​きますが、Pivo​​t.HeaderTemplate と PivotItem の間のバインディングを変更することに成功しませんでした。

于 2013-11-13T16:28:47.347 に答える
0

ピボット全体ではなく、すべてのアイテムのヘッダーを個別に定義してみてください。ピボット全体で機能させたい場合は、スタイルを変更し、字幕のプロパティで拡張する必要があります。

とにかく、ピボット項目のみのヘッダーを変更したい場合のコードは次のとおりです

<controls:Pivot Name="MainPivot">
    <controls:PivotItem x:Name="HomeMenuPivotItem">
        <controls:PivotItem.Header>
            <StackPanel>
                <TextBlock Text="Title"/>
                <TextBlock Text="Subtitle"/>
            </StackPanel>
        </controls:PivotItem.Header>
    </controls:PivotItem>
</controls:Pivot>
于 2013-11-14T13:34:34.627 に答える