如何在Windows Phone 8.1中更改共享App栏的标签

时间:2014-09-25 07:30:49

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

我正在开发一款Windows Phone 8.1应用程序。我在页面上使用了共享应用栏。在某些时候,我需要更改全局应用栏的标签或图标。这可能吗?

你的想法会有所帮助。

4 个答案:

答案 0 :(得分:1)

WP8.1上的

BottomAppBar CommandBar,您可以找到PrimaryCommands property,其中您可能有AppBarButtons。如果您想更改例如标签图标或其他任何内容),您应该可以这样做:

// change the label of the first button
((BottomAppBar as CommandBar).PrimaryCommands[0] as AppBarButton).Label = "New Label";

如果您想经常更改AppBarButton的参数,为了更容易,您可以编写一个简单的扩展方法:

/// <summary>
/// Get AppBarButton of AppBar - extension method
/// </summary>
/// <param name="index">index of target AppBarButton</param>
/// <returns>AppBarButton of desired index</returns>
public static AppBarButton PButton(this AppBar appBar, int index) { return (appBar as CommandBar).PrimaryCommands[index] as AppBarButton; }

当然,它与上面的相同,但更容易使用:

BottomAppBar.PButton(0).Label = "New label";

答案 1 :(得分:0)

如果您在“资源”中存储应用栏,则可以通过以下代码访问它:

var commandBar = Application.Current.Resources["YouResourceKeyForAppBar"] as AppBar;

现在你有了它的引用,你可以修改它里面的项目。如果您以其他方式实施SharedApp,请编辑您的问题并告知更多相关信息。

答案 2 :(得分:0)

由于Windows.UI.ViewManagement命名空间中的8.1库,即StatusBarApplicationView的标题

,也许我可以建议一个替代解决方案

它不会帮助解决这个问题,但是对于正在看这篇文章的人来说可能会更简单。

var titleName = "TITLE";

var statusBar = Windows.UI.ViewManagement.StatusBar.GetForCurrentView();
statusBar.ProgressIndicator.Text = titleName;

var applicationView = Windows.UI.ViewManagement.ApplicationView.GetForCurrentView();
applicationView.Title = titleName;

然后显示和隐藏,控制:

await statusBar.ProgressIndicator.ShowAsync();
await statusBar.ProgressIndicator.HideAsync();

不幸的是,你唯一可以在这里设置的是Title。我不认为您可以将自定义样式设置为StatusBar。

答案 3 :(得分:0)

public MainPage()

{     this.InitializeComponent();

Loaded += MainPage_Loaded;
}

void MainPage_Loaded(object sender, RoutedEventArgs e)
{
CommandBar bottomCommandBar = this.BottomAppBar as CommandBar;
AppBarButton appbarButton_0 = bottomCommandBar.PrimaryCommands[0] as AppBarButton;
appbarButton_0.Label = "settings";
appbarButton_0.Icon = new SymbolIcon(Symbol.Setting);
}