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中插入自定义控件,因为它非常有限。有任何想法吗?
感谢。
答案 0 :(得分:3)
Windows Phone上的AppBar显示为系统UI,而不是应用程序本身的一部分。只能使用系统理解的项目(基本上是AppBarButtons中的图标蒙版和文本以及CommandBar中的前景色和背景色)。这就是为什么你不能像在Windows上那样在手机上使用任意控件或彩色图标。
如果你想要一个更加个性化的AppBar,那么你必须自己实现它,而不是使用内置的AppBar。只要您遵循系统AppBar的基本设计概念,就不应该混淆您的用户。您可以查看照片应用和IE作为示例扩展设计的内容。
答案 1 :(得分:0)
Microsoft不支持此功能,因为它们需要标准控件的通用外观。所以在应用栏中你只能添加这些基本项目。
您能想到的唯一解决方案是构建自己的应用栏控件,但问题是,如果这是您的客户想要的解决方案。因为它们习惯于标准的应用栏。