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

Silverlight 4.0 在运行时更改应用程序栏按钮图标,silverlight-4.0,windows-phone-7,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.trans

我正在开发一个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");
}
这并没有给我一个错误的代码,但它不能编译。。。。 如有任何提示,敬请谅解:)


感谢您,ApplicationBar是一个特殊的控件,它的行为与其他Silverlight控件不同(请参阅)。结果之一是,XAML to app bar按钮中给定的名称会在代码隐藏中生成始终为空的字段

我猜在您的例子中,DetailsAppBar中的btnStart字段被设置为null,因此尝试设置其IconUri属性会导致引发NullReferenceException

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

button = (IApplicationBarIconButton)ApplicationBar.Buttons[2];
我想出来了

((ApplicationBarIconButton)ApplicationBar.Buttons[2]).IconUri = new Uri("/AppBar/appbar.stop.rest.png",UriKind.Relative);
成功了:)