微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ImageButton 不触发 Xamarin Forms 中的命令绑定

如何解决ImageButton 不触发 Xamarin Forms 中的命令绑定

我有一个 ImageButton,它没有使用 VMMV 架构触发命令绑定命令。首先,所有其他绑定都在视图中正常工作。

这是按钮:

<ImageButton Command="{Binding Selecteditemcommand}" Source="{Binding logo}" Grid.Row="0" Grid.Column="1" HeightRequest="150" WidthRequest="150" HorizontalOptions="CenterandExpand" VerticalOptions="EndAndExpand"></ImageButton>

viewmodel 中:

public ICommand Selecteditemcommand => new Command(GetSelectedItem);

当我点击图片时,没有任何反应。我什至尝试绑定到 pressed 参数,但从我读过的所有内容来看,应该在绑定场景中使用 Command 参数。永远不会到达函数 GetSelectedItem 上的断点。

在这里做错了什么?

抱歉,离开了几天。因此,即使他们真的应该点击不会触发命令,也没有对建议起作用。无论如何,我现在设法使用这样的事件处理程序来触发它:

Selecteditemcommand = new Command<string>(param => OnItemSelected(param));

public void OnItemSelected(string img1_2)
{
  pressedEventHandler?.Invoke(this,EventArgs.Empty);
}

参数捕获 CommandParameter,因此我知道单击了问题的哪个图像“img1”“img2”以执行特定操作。所以我的函数现在接受一个发送者对象和空的 eventarg。我想改为传递 img1_2 值,但目前似乎不可能。令人讨厌的是发件人对象包含图像中的所有属性和值(如我所有属性的数组),但我似乎无法获得它们。 尝试过这个:

string str = Item1Image.ToString(); // property in sender and viewmodel

但是这会返回一个空值而不是发送者对象值中列出的值?

还有其他想法吗?

TIA! 瑞克...

解决方法

public ICommand SelectedItemCommand {get; private set;}

...

public YourViewModel(){
   ...
   SelectedItemCommand = new Command(GetSelectedItem);
   ...
}
...

public ICommand SelectedItemCommand{
   get
   {
      return new Command(() => {
           //Do something
      });
   }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。