在运行时更改应用程序栏按钮图标

Chr*_*n M 5 silverlight-4.0 windows-phone-7

我正在开发一个WP7应用程序,应用程序需要在给定请求状态的情况下更改应用程序栏上按钮的图标.我试过了:

if (App.Servers[index].ServerState == "Enabled")
{
  DetailsAppBar.btnStart.IconUri = new Uri("/AppBar/appbar.stop.rest.png");
}

else
{
  DetailsAppBar.btnStart.IconUri = new Uri("/AppBar/appbar.transport.play.rest.png");
}
Run Code Online (Sandbox Code Playgroud)

这不会给我一个错误的代码,但它无法编译....任何提示这样做是赞赏:)

谢谢

And*_*ont 11

ApplicationBar是一种特殊控件,与其他Silverlight控件的行为不同(参见Peter Torr关于该主题的文章).其中一个后果是,XAML中给app bar按钮给出的名称会在代码隐藏中生成始终为null的字段.

我猜测在你的情况下,DetailsAppBar中的btnStart字段被设置为null,因此尝试设置其IconUri属性会导致抛出NullReferenceException.

要访问应用程序栏中的按钮,您必须通过按钮列表中从零开始的索引来引用它.例如,下面的代码返回对应用栏中第三个按钮的引用:

button = (IApplicationBarIconButton)ApplicationBar.Buttons[2];
Run Code Online (Sandbox Code Playgroud)


Chr*_*n M 8

弄清楚了...

((ApplicationBarIconButton)ApplicationBar.Buttons[2]).IconUri = new Uri("/AppBar/appbar.stop.rest.png",UriKind.Relative);
Run Code Online (Sandbox Code Playgroud)

做了诀窍:)