【问题标题】:WP8 add subtitle text to pivot control headerWP8 将字幕文本添加到枢轴控件标题
【发布时间】:2013-11-14 21:34:34
【问题描述】:

我想创建带有两个文本块的自定义数据透视表头:一个用于标题标题,一个用于副标题,或者可能为每个数据透视页面添加相同的静态字幕。 简单的方法是定义标题模板,如下例所示,但是如何将字幕文本绑定到实际控件以便能够在代码中进行更改?如果唯一的选择是覆盖枢轴控制,请提供一些示例(如果存在)。

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

谢谢。

【问题讨论】:

    标签: c# windows-phone-7 windows-phone-8


    【解决方案1】:

    我成功地做了你想做的事,但我并不为解决方案感到自豪......

    首先,我创建了一个包含 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}">
    

    然后像这样设置 Pivot.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 的行为可以实现更好的解决方案,但是我没有成功更改 Pivot.HeaderTemplate 和 PivotItem 之间的绑定。

    【讨论】:

    • 这个解决方案看起来确实有点尴尬。我考虑将所需的元素包装在扩展的枢轴控制中。不过,为您的努力 +1。
    【解决方案2】:

    您可以尝试分别为每个项目定义标题,而不是为整个枢轴定义。如果您想让它适用于整个枢轴,您应该更改样式,并使用字幕属性对其进行扩展。

    如果您只想更改数据透视项目的标题,这里是代码

    <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>
    

    【讨论】:

    • 好主意。简单的解决方案,可以达到我的目的。你能解释一下如何改变/扩展风格或举个例子吗?链接也会很好。
    • 您必须创建一个继承 Pivot 的控件并向其添加额外的 Subtitle 属性。然后你必须用谷歌搜索枢轴样式的外观,你可以复制它,并将目标从枢轴更改为自定义控件,并将文本块添加到绑定到字幕属性的样式中。我找不到我试图解释的链接,但您可能会在这里找到有用的信息:social.msdn.microsoft.com/Forums/wpapps/en-US/…
    猜你喜欢
    • 1970-01-01
    • 2023-03-15
    • 2011-08-28
    • 2015-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多