如何更改windows phone 8.1中共享应用程序栏的标签

本文关键字:应用程序 共享 标签 何更改 windows phone | 更新日期: 2023-09-27 18:24:16

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

你的想法会有所帮助。

如何更改windows phone 8.1中共享应用程序栏的标签

BottomAppBar在WP8.1中是CommandBar,在那里您可以找到PrimaryCommands属性,其中可能有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";

如果您将应用程序栏存储在Resources中,则可以通过以下代码访问它:

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

现在你有了它的引用,你可以修改其中的项目。如果你以另一种方式实现了SharedApp,请编辑你的问题并告诉更多关于它的信息。

也许我可以建议一个替代解决方案,这要归功于Windows.UI.ViewManagement命名空间中的8.1库,即StatusBar和ApplicationView的Title

这对这种情况没有帮助,但对于另一个正在看这篇帖子的人来说,可能会让事情变得更简单。

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();

不幸的是,您只能在这里设置标题。我认为您不能为StatusBar设置自定义样式。

public MainPage()

{这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);
}