如何在Windows Phone 8.1应用程序栏中添加自定义控件?

3
我想在Windows Phone 8.1应用栏的次要部分添加自定义控件,例如滑块或按钮,就像相机应用程序中应用栏中的那个一样。 有什么办法可以做到吗?

你可能想要更改这些按钮的 ControlTemplate,你当然可以在那里插入滑块。 - quirell
@quirell,你能告诉我怎么做吗? - ac-lap
好的,我等会儿到电脑前就给你展示。但是你可以先在 Blend 中打开页面,将普通按钮放在设计面板上,在编辑样式时添加滑块,并将该样式应用于 AppBarButton,应该就可以实现了。 - quirell
@ac-lab 首先,相机应用程序实际上没有AppBar。按底部的三个点打开的控件是该相机应用程序的开发人员制作的自定义控件。检查该控件的打开和关闭动画,并尝试将其与实际的AppBar控件动画相关联。您会发现该应用程序的开发人员使用了一个定制的用户控件,与底部AppBar相同,并在应用程序中使用它。 - Keval Langalia
1个回答

2

看起来,我的解决方案只适用于设计师,在尝试了另一个解决方案后,也只在设计师中工作。因此,我得出结论:除了默认按钮之外,无法将任何其他内容放入命令栏,我的尝试如下:

我尝试将这个样式应用到AppbarButton上,按钮在设计师中变成了滑块,但在手机上,样式被覆盖了。

<Style x:Key="ButtonStyle1" TargetType="Button">
            <Setter Property="Background" Value="Transparent"/>
            <Setter Property="BorderBrush" Value="{ThemeResource PhoneForegroundBrush}"/>
            <Setter Property="Foreground" Value="{ThemeResource PhoneForegroundBrush}"/>
            <Setter Property="BorderThickness" Value="{ThemeResource PhoneBorderThickness}"/>
            <Setter Property="FontFamily" Value="{ThemeResource PhoneFontFamilyNormal}"/>
            <Setter Property="FontWeight" Value="{ThemeResource PhoneButtonFontWeight}"/>
            <Setter Property="FontSize" Value="{ThemeResource TextStyleLargeFontSize}"/>
            <Setter Property="Padding" Value="9.5,0"/>
            <Setter Property="MinHeight" Value="{ThemeResource PhoneButtonMinHeight}"/>
            <Setter Property="MinWidth" Value="{ThemeResource PhoneButtonMinWidth}"/>
            <Setter Property="HorizontalAlignment" Value="Left"/>
            <Setter Property="VerticalAlignment" Value="Center"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="Button">
                        <Grid x:Name="Grid" Background="Transparent">
                            <Slider ValueChanged="RangeBase_OnValueChanged"  Width="100" Background="{TemplateBinding Background}" Foreground="{TemplateBinding Foreground}" />
                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

第二种方法是从滑块中派生并实现ICommandBarElement,这似乎可以工作,但在模拟器下运行时出现问题,滑块甚至没有显示出来。
 public sealed class CommandBarSlider : Slider, ICommandBarElement
    {
        public CommandBarSlider()
        {
            this.DefaultStyleKey = typeof(Slider);
        }

        public bool IsCompact { get; set; }
    }

从这些代码中可以得出的明显结论是,你正在尝试做的事情要么是不可能的,要么是我忽略了某些东西。
(很可能是我忽略了某些东西)

我也卡在这个问题上有一段时间了。我只是不明白微软 IE 团队是如何将文本框控件添加到 internet explorer 的 WP8 应用栏中的 - 除非他们从头开始重新创建了整个东西? - user788055

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接