c# - 如何将 View 内的命令绑定(bind)到 MvvmCross 中的 ViewModel

标签 c# xamarin.android mvvmcross

我有这个 android View ,我在其中使用 LegacyBar:

public class BaseView : MvxActivity
{
    public override void SetContentView(int layoutResId)
    {
        base.SetContentView(layoutResId);
        var bar = FindViewById<LB.LegacyBar>(Resource.Id.actionbar);
        bar.SetHomeLogo(Resource.Drawable.Icon);
        var attr = this.GetType()
            .GetCustomAttributes(typeof(ActivityAttribute), true)
            .FirstOrDefault() as ActivityAttribute;
        if (attr != null)
            bar.Title = attr.Label;
        bar.SetHomeAction(new ActionLegacyBarAction(ApplicationContext, doHomeAction, Resource.Drawable.Icon));
    }

    public ICommand homeActionClicked { get; set; }
    private void doHomeAction()
    {
        if (homeActionClicked != null && homeActionClicked.CanExecute(null))
            homeActionClicked.Execute(null);
    }
}

将此 View 中定义的 homeActionClicked 绑定(bind)到其 ViewModel 中的命令的正确方法是什么? 或者也许我应该制作一个自定义控件并将栏放在其中,然后绑定(bind)控件的命令?

最佳答案

您可以将 ViewModel 作为 View 中的属性进行引用,这样您就可以访问它的属性并设置从 View 到 View 模型的命令。

protected MvvMCore.Core.ViewModels.NavigationBarViewModel NavigationBarViewModel {
            get{ return base.ViewModel as MvvMCore.Core.ViewModels.NavigationBarViewModel; }
        }

关于c# - 如何将 View 内的命令绑定(bind)到 MvvmCross 中的 ViewModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19049786/

相关文章:

c# - 单元测试模拟框架是否会以您的编程方式强制您?

c# - 多个线程读取同一个文件

android - 使用 DDMS、telnet 或任何其他方式将 GPS 坐标发送到 Android 模拟器

c# - 如何从 Xamarin Forms for Android 的按钮 View 中删除额外的填充?

xamarin.ios - 无法添加对 Cirrious.CrossCore.dll 的引用

ios - UISplitViewController 主内容宽度

c# - 在 json 反序列化过程中如何忽略未知的枚举值?

android - 是否可以在 Mono Android 中使用不带 ListActivity 的 ListView?

xamarin - CallygraphyXamarin 无法在 MvxAppCompatActivity 中工作

javascript - 使用 javascript 自动选择下拉列表并运行 jquery