如何将菜单选项属性(例如Enabled Property)数据绑定到ViewModel属性?
我的菜单是在我的MvxActivity继承的类中创建的,如下所示:
public override void OnCreateContextMenu( IContextMenu menu, View v, IContextMenuContextMenuInfo info )
{
switch (v.Id)
{
case Resource.Id.textView1:
menu.Add( 0, 0, 0, "Menu Option1" );
menu.Add( 0, 1, 0, "Menu Option2" );
break;
case Resource.Id.textView2:
menu.Add( 0, 2, 0, "Menu Option3" );
menu.Add( 0, 3, 0, "Menu Option4" );
break;
...
}
...
}
我知道我可以启用/禁用单个菜单项,如下所示:
IMenuItem menuOption = menu.FindItem( 1 ); // Refers to "Menu Option2" above
if (menuOption != null)
{
menuOption.SetEnabled(false);
}
但是如何使用MVVMCross绑定实现这一目标?我想我可以用C#(动态)做到这一点,但我不知道该怎么做。有人能告诉我吗?
提前致谢。
答案 0 :(得分:3)
因为菜单是按需创建的,所以#34;然后我通常只使用ViewModel当前属性实现SetEnabled类型的东西来处理它。
e.g。
var myViewModel = (MyViewModel)ViewModel;
var menuOption = menu.FindItem( 1 ); // Refers to "Menu Option2" above
menuOption.SetEnabled(myViewModel.CanDoSomething);
Cleverer - 更多"绑定"选项可用 - 例如我们可以创建一个菜单包装对象来自动挂钩 - 但在我使用菜单的少数情况下,我发现这个ViewModel方法工作正常
答案 1 :(得分:0)
如何异步完成?我想在加载所有数据后才允许菜单项。我的ViewModel上有一个IsDataLoaded属性,但是当它改变时无法弄清楚如何启用菜单。