为了账号安全,请及时绑定邮箱和手机立即绑定

如何获取代码隐藏/ XAML中元素的x:名称

如何获取代码隐藏/ XAML中元素的x:名称

C#
浮云间 2022-08-20 16:43:21
我在.xaml中有一些图像,如下所示:<Image x:Name="image1" Source="image1.png"><Image.GestureRecognizers><TapGestureRecognizer Tapped="OnTapGestureTap" NumberOfTapsRequired="1" /></Image.GestureRecognizers></Image><Image x:Name="image2" Source="image2.png"><Image.GestureRecognizers><TapGestureRecognizer Tapped="OnTapGestureTap" NumberOfTapsRequired="1" /></Image.GestureRecognizers></Image>单击时,图像会调用一些操作。现在在xaml.cs文件,我需要获取单击哪个图像以在交换机中使用:    async void OnTapGestureTap(object sender, EventArgs args)    {        switch () //--HOW VERIFY IN SWiTCH WHICH IMAGE WAS CLICKED???        {            case image1:                await Navigation.PushAsync(new Image1Page());                break;            case image2:                await Navigation.PushAsync(new Image2Page());                break;        }    }
查看完整描述

5 回答

?
慕婉清6462132

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;

    }

}


查看完整回答
反对 回复 2022-08-20
?
慕容708150

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;

      }

   }

}

注意:这是完全未经测试的


查看完整回答
反对 回复 2022-08-20
?
白板的微信

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;

    }

}


查看完整回答
反对 回复 2022-08-20
?
牧羊人nacy

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 加载时创建。


查看完整回答
反对 回复 2022-08-20
?
慕田峪9158850

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;

    }

}


查看完整回答
反对 回复 2022-08-20
  • 5 回答
  • 0 关注
  • 179 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号