如何将图标和文本更改为应用程序栏IconButton?

时间:2013-06-12 14:27:55

标签: c# windows-phone-7 windows-phone

我想让我的click事件更改为ApplicationBarIconButton。我的ApplicationBarIconButton看起来像这样:

<shell:ApplicationBarIconButton x:Name="driveAction" Click="drive_click" IconUri="/img/car.png" Text="kör" />

我希望 IconUri /img/car.png 更改为ex。 /img/car-stop.png 以及kör passagera 的文本值。我尝试了下面的功能,但它只会导致我的应用关闭。

private void drive_click(object sender, EventArgs e)
{
  this.driveAction.Text = "passagera";
  this.driveAction.Source = "/img/car-stop.png";
}

有什么问题?为什么这不起作用?

3 个答案:

答案 0 :(得分:2)

默认的ApplicationBar要求您通过ApplicationBar对象访问按钮。要完成此操作,您必须知道要更改的按钮的索引

private const int DriveButtonIndex = 0;

private void drive_click(object sender, EventArgs e)
{
    var button = (ApplicationBarIconButton)ApplicationBar.Buttons[DriveButtonIndex];
    button.IconUri = new Uri("/img/car-stop.png", UriKind.Relative);
    button.Text = "passagera";
}

有一些自定义ApplicationBars允许您命名按钮。但我发现上述解决方案总是对我有用。

答案 1 :(得分:1)

直接从应用栏列表中获取 -

ApplicationBar.Buttons[0].Text = "passagera";
ApplicationBar.Buttons[0].Source = "/img/car-stop.png";

您还可以查询特定图标的按钮列表,作为更长期的长期解决方案,但如果您只有一个按钮而且不会改变,则可以使用。

答案 2 :(得分:0)

因为ApplicationBarIconButton实际上是本机控件而不是真正的XAML对象,所以不能按名称引用它。

如果在XAML中创建,则可以通过索引引用它。或者,您可以在代码中创建它,然后您可以维护可以使用的命名引用。