我想让我的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";
}
有什么问题?为什么这不起作用?
答案 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中创建,则可以通过索引引用它。或者,您可以在代码中创建它,然后您可以维护可以使用的命名引用。