xamarin.forms - ImageButton 未在 Xamarin 表单中触发命令绑定
问题描述
我有一个没有使用 VMMV 架构触发命令绑定命令的 ImageButton。首先,所有其他绑定在视图中正常工作。
这是按钮:
<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”来执行特定操作。所以我的函数现在接受一个发送者对象和空事件参数。我想改为传递 img1_2 值,但目前看来不可能。奇怪的是 sender 对象包含图像中的所有属性和值(就像我所有属性的数组),但我似乎无法理解它们。尝试了这个:
string str = Item1Image.ToString(); // property in sender and viewmodel
但这会返回一个空值而不是发送者对象值中列出的值?
有什么额外的想法吗?
蒂亚!瑞克...
解决方案
public ICommand SelectedItemCommand {get; private set;}
...
public YourViewModel(){
...
SelectedItemCommand = new Command(GetSelectedItem);
...
}
...
或者
public ICommand SelectedItemCommand{
get
{
return new Command(() => {
//Do something
});
}
}
推荐阅读
- python - Pygame 窗口在全屏模式下没有响应
- python - 我想计算欧几里得距离并将其放入列表中。我收到范围错误,我错过了什么?
- android - GoogleMap片段上的多个折线选项
- c# - 如何使用 EAV 模型向 Sql DB 插入数据
- haskell - Is there a wildcard type variable in Haskell?
- reactjs - 如何在 React 应用程序中获取组件的所有实例并使用 Jest 验证其属性?
- python - 调试期间不评估输入语句 - 触发 Try except
- ios - 升级到新的 Xcode 12 时出错
- javascript - 如何最小化在 JavaScript 中的对象数组中查找重复值的代码函数?
- firebase - FireStore 子系列定价?