AppBar WP8.1中的自定义控件

时间:2015-03-16 10:47:12

标签: c# xaml windows-phone-8.1 winrt-xaml

WP8.1中的appbar不是很灵活,我们仅限于某种固定控件,如appbarbutton,appbarseparator ......但我想在AppBar中添加一个堆栈面板。 AppbarButton和AppBarSeparator都在实现" ICommandBarElement"。我想,我们可以创建一个自定义控件,继承自StackPanel并实现接口" ICommandBarElement"并做了。但实际上并不容易,但不可能使这项工作。我尝试从Button继承并实现该接口,以制作AppBarButton的精确副本,但即使这样也无法正常工作。

 using Windows.Foundation;
using Windows.UI.Xaml.Controls;

internal class AppbarRectangle : Button, ICommandBarElement
{
    public AppbarRectangle()
    {
        Loaded += AppbarRectangle_Loaded;
    }

    private void AppbarRectangle_Loaded(object sender, Windows.UI.Xaml.RoutedEventArgs e)
    {
    }

    protected override Size ArrangeOverride(Size finalSize)
    {
        return base.ArrangeOverride(finalSize);
    }

    protected override Size MeasureOverride(Size availableSize)
    {
        return base.MeasureOverride(availableSize);
    }

    protected override void OnApplyTemplate()
    {
        base.OnApplyTemplate();
    }

    public bool IsCompact
    {
        get
        {
            return false;
        }
        set
        {
        }
    }
}

我没有任何线索可以在AppBar中插入自定义控件,因为它非常有限。有任何想法吗?

感谢。

2 个答案:

答案 0 :(得分:3)

Windows Phone上的AppBar显示为系统UI,而不是应用程序本身的一部分。只能使用系统理解的项目(基本上是AppBarButtons中的图标蒙版和文本以及CommandBar中的前景色和背景色)。这就是为什么你不能像在Windows上那样在手机上使用任意控件或彩色图标。

如果你想要一个更加个性化的AppBar,那么你必须自己实现它,而不是使用内置的AppBar。只要您遵循系统AppBar的基本设计概念,就不应该混淆您的用户。您可以查看照片应用和IE作为示例扩展设计的内容。

答案 1 :(得分:0)

Microsoft不支持此功能,因为它们需要标准控件的通用外观。所以在应用栏中你只能添加这些基本项目。

您能想到的唯一解决方案是构建自己的应用栏控件,但问题是,如果这是您的客户想要的解决方案。因为它们习惯于标准的应用栏。