我正在开发一款Windows Phone 8.1应用程序。我在页面上使用了共享应用栏。在某些时候,我需要更改全局应用栏的标签或图标。这可能吗?
你的想法会有所帮助。
答案 0 :(得分: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库,即StatusBar和ApplicationView的标题
,也许我可以建议一个替代解决方案它不会帮助解决这个问题,但是对于正在看这篇文章的人来说可能会更简单。
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);
}