在Xamarin.forms中识别动态创建的ImageButton单击及其属性

时间:2014-07-15 05:29:46

标签: c# xamarin xamarin.forms

我使用Xamrin.forms.labs在共享代码中创建Imagebutton。图像按钮的数量根据列表中的元素数量而变化。我的问题是

  1. 如何识别点击了哪个按钮? (我需要Imagebutton的文字进行识别)
  2. 我必须在第一次单击图像按钮时将图像更改为Source_on.png,然后在第二次单击时更改回Source.png。 (就像选择和取消选择一样)
  3. 我怎样才能实现它?

    我用来创建ImageButtons的代码如下所示。

                StackLayout Holder = new StackLayout {
                HorizontalOptions=LayoutOptions.FillAndExpand,
                VerticalOptions=LayoutOptions.Center,
                Orientation=StackOrientation.Horizontal,
                Spacing=2,
                };
    
            foreach (var options in list)
            {
    
                    var Icon = new ImageButton () {
                        Source=Source.png,
                        BackgroundColor=Xamarin.Forms.Color.Transparent,
                        HorizontalOptions=LayoutOptions.CenterAndExpand,
                        VerticalOptions=LayoutOptions.CenterAndExpand,
                        Orientation=Xamarin.Forms.Labs.Enums.ImageOrientation.ImageOnTop,
                        Text=labeltxt,
                    };
    
                    Icon.Clicked += OnSelected;
    
                    Holder.Children.Add (Icon );
    
                }
            }
    

    提供有用的链接或示例代码将非常有用.. 在此先感谢..

1 个答案:

答案 0 :(得分:0)

如果您共享ImageButton的代码,那将会有很大帮助。

话虽如此......如果你的ImageButton有一个Command属性,它也会有一个CommandParameter属性。如果它没有 - 制作它们。

您可以使用某个ID设置CommandParameter属性,然后将Command绑定到相同的代码,例如

ImageButton icon = null;
icon = new ImageButton{
...
  Command= new Command((tag)=>{
     icon.Source = ImageSource.FromFile("...");// see other .FromXYZ methods too
  },
  CommandParameter="<your tag here>",
}

但是......在你完成所有这些之前检查Xamarin.Forms.Labs,那里已经有了一个ImageButton,你可以通过搜索&#34; Xamarin Forms Labs&#从NuGet添加该项目34;在包管理器中