【问题标题】:Binding viewModel property to view property in MvvmCross将 viewModel 属性绑定到 MvvmCross 中的视图属性
【发布时间】:2014-01-17 10:11:24
【问题描述】:

我正在使用 MvvmCross 和 SherlockActionBar。我的问题是我需要根据某些 ViewModel 属性的值使 SherlockActionBar 中的项目消失。

actionBar 中的项目具有属性 IsVisible 但不幸的是它没有设置器(您需要通过 item.SetVisible(boolValue) 设置可见性)所以我决定在 View.cs 中创建自己的属性 ItemVisible (将其绑定到ViewModel-property),它将更改调用 item.SetVisible。

我已经搜索了如何在代码绑定和found this 中进行操作。

所以我将 ItemVisible View 属性绑定到 ViewModelProperty,但它从未进入 ItemVisible setter。当然,在 ViewModelProperty 可以更改之后,我会在 viewModel 中提出 RaiseAllPropertyChanged 。我查看了mvvmcross bindings,但没有找到问题的答案。我做错了什么?

    public class SomeView : BaseActionBarActivity {
    private IMenuItem _item ;

    private bool ItemVisible
    {
        get { return _item.IsVisible; }
        set { _item.SetVisible(value); }
    }

    protected override void OnCreate(Bundle bundle)
    {
        SetTheme(Resource.Style.Theme_Sherlock);
        base.OnCreate(bundle);
        SetContentView(Resource.Layout.SomeView);

        var set = this.CreateBindingSet<SomeView, SomeViewModel>();
        set.Bind(this).For(p => p.ItemVisible).To(e => e.ViewModelProperty);
        set.Apply();
    }

    public override bool OnCreateOptionsMenu(Xamarin.ActionbarSherlockBinding.Views.IMenu menu)
    {
        SupportMenuInflater.Inflate(Resource.Menu.SomeMenu, menu);

        _item = menu.FindItem(Resource.Id.xmlMenuResource);
    }}

【问题讨论】:

    标签: mvvmcross


    【解决方案1】:

    我猜这是因为 private bool ItemVisible 中的 private - MvvmCross 需要使用反射来调用此成员,并且由于 CLR 安全限制,很难在 private 成员上执行此操作。

    试试:

    public bool ItemVisible
    {
        get { return _item.IsVisible; }
        set { _item.SetVisible(value); }
    }
    

    这个话题在 N=18 和 N=28 在http://mvvmcross.blogspot.co.uk/ 中也有所涉及(并且在我的 NDC 伦敦演讲中也有所涉及https://speakerdeck.com/cirrious/data-bind-everything 但恐怕还没有录制视频! )

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-05
      • 2014-01-21
      • 1970-01-01
      • 1970-01-01
      • 2011-08-26
      • 1970-01-01
      • 2015-01-25
      • 1970-01-01
      相关资源
      最近更新 更多