5 回答

TA贡献1804条经验 获得超2个赞
您可以检索原始映像名称并打开该字符串:
if (sender is Image image)
{
switch (image.Source as FileImageSource).File)
{
case "image1.png":
Console.WriteLine("image1.png");
break;
case "image2.png":
Console.WriteLine("image2.png");
break;
}
}

TA贡献1831条经验 获得超4个赞
如果你真的把心思放在开关上,这可能会起作用。假设发件人实际上是一个,并且名称将是Imagex:Name
更新
尝试将发件人与图像本身进行比较
if(sender == image1)
...
源语言
async void OnTapGestureTap(object sender, EventArgs args)
{
if(sender is Image image)
{
switch (image.Name) // switch on the name
{
case "image1":
await Navigation.PushAsync(new Image1Page());
break;
case "image2":
await Navigation.PushAsync(new Image2Page());
break;
}
}
}
注意:这是完全未经测试的

TA贡献1883条经验 获得超3个赞
您可以使用 Image 中的 ClassId 属性
<Image ClassId="image1" Source="image1.png">
<Image.GestureRecognizers>
<TapGestureRecognizer Tapped="OnTapGestureTap" NumberOfTapsRequired="1" />
</Image.GestureRecognizers>
</Image>
<Image ClassId="image2" Source="image2.png">
<Image.GestureRecognizers>
<TapGestureRecognizer Tapped="OnTapGestureTap" NumberOfTapsRequired="1" />
</Image.GestureRecognizers>
</Image>
在后台只需切换 ClassId
async void OnTapGestureTap(object sender, EventArgs args)
{
var image = sender as Image;
switch (image.ClassId)
{
case "image1":
await Navigation.PushAsync(new Image1Page());
break;
case "image2":
await Navigation.PushAsync(new Image2Page());
break;
}
}

TA贡献1862条经验 获得超7个赞
如果未指定,则此属性将作为字符串继承该值。StyleIDx:Name
x:Name是由 XAML 生成的字段的名称。在这种情况下,有效答案是
if (sender == image1)
{
await Navigation.PushAsync(new Image1Page());
}
else if (sender == image2)
{
await Navigation.PushAsync(new Image2Page());
}
您可以获取带有下划线并带有错误消息的字段名称:
名称“image1”在当前上下文中不存在。
但是上下文将在 XAML 加载时创建。

TA贡献1794条经验 获得超8个赞
试试这个
async void OnTapGestureTap(object sender, EventArgs args)
{
var image = sender as Image;
switch (image)
{
case image1:
await Navigation.PushAsync(new Image1Page());
break;
case image2:
await Navigation.PushAsync(new Image2Page());
break;
}
}
- 5 回答
- 0 关注
- 179 浏览
添加回答
举报