2010-09-15 42 views
5

我正在开发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"); 
} 

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

感谢

回答

11

ApplicationBar是一种特殊的控件,不像其他Silverlight控件(请参阅Peter Torr's post on the subject)。其中一个后果是,在XAML中为应用栏按钮提供的名称会在代码隐藏中生成始终为空的字段。

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

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

button = (IApplicationBarIconButton)ApplicationBar.Buttons[2]; 
+0

是啊,我刚刚找到了窍门出:)谢谢 – 2010-09-15 21:08:46

8

想通了......

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

做:)

相关问题