代码之家  ›  专栏  ›  技术社区  ›  Christian M

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

  •  5
  • Christian M  · 技术社区  · 15 年前

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

    这不会给我代码中的错误,但它无法编译…. 如有任何提示,我们将不胜感激:)

    谢谢

    2 回复  |  直到 15 年前
        1
  •  11
  •   Andréas Saudemont    15 年前

    ApplicationBar是一个特殊控件,其行为与其他Silverlight控件不同(请参见 Peter Torr's post on the subject )其结果之一是,在XAML中为应用程序栏按钮提供的名称会在代码后面生成始终为空的字段。

    我猜在您的情况下,detailsAppBar中的btnstart字段设置为空,因此尝试设置其iconuri属性会导致引发NullReferenceException。

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

    button = (IApplicationBarIconButton)ApplicationBar.Buttons[2];
    
        2
  •  8
  •   Christian M    15 年前

    明白了…

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

    耍了把戏:)

    推荐文章