Xamarin为何无法响应ViewModel中绑定的Command命令
Xamarin Command 绑定失效问题修复
问题根因
你的ViewModel类使用了internal访问修饰符,Xamarin.Forms的绑定系统在解析Command绑定时,仅能反射访问public级别的类型和成员,internal类型的Command属性会被绑定引擎直接忽略,因此不会触发执行逻辑。普通事件绑定是直接在代码层面关联,不依赖跨程序集的反射成员查找,因此可以正常生效。
修复步骤
- 将
MainVM类的访问修饰符从internal修改为public - 确认项目中使用的
RelayCommand实现为public类型,且正确实现了ICommand接口 - 清理解决方案后重新生成项目,清除旧的XAML编译缓存
修正后的ViewModel代码
namespace TestXamarinMvvm.ViewModels { public class MainVM : BaseVM { public MainVM() { TestCommand = new RelayCommand(obj => { App.Current.MainPage.DisplayAlert("Work", "It is working.", "OK"); }); } public RelayCommand TestCommand { get; } } }
你提供的XAML视图代码绑定写法本身没有问题,无需修改。
内容的提问来源于stack exchange,提问作者Souta Norogami
相关产品推荐
相关产品推荐

