如何在ReactiveUI中使用NSTextField和NSTableCellView的子类

时间:2014-11-19 21:28:59

标签: c# monomac reactiveui

我目前正在将SideBarDemo与ReactiveUI一起转换为C#和MonoMac。 我有两个NSTextField和NSTableCellView子类,它们是公共视图模型类的视图。 我的问题是我不知道如何实现这些子类,以便数据绑定工作。 这些子类的良好实现如何?

在下面你可以看到我当前的状态。我知道在构造函数中创建的绑定将不起作用,因为ViewModel是一个普通的属性。但是,我无法弄清楚我应该最好地实现哪些接口。

[Register("MainCellView")]
public class MainCellView : NSTableCellView, IViewFor<TreeItemViewModel>
{
    public MainCellView ()
    {
        this.OneWayBind (ViewModel, x => x.Name, x => x.TextField.StringValue);
    }

    public MainCellView(IntPtr ptr) : base(ptr) { }

    public TreeItemViewModel ViewModel { get; set; }

    object IViewFor.ViewModel
    {
        get { return this.ViewModel; }
        set { this.ViewModel = (TreeItemViewModel)value; }
    }
}

[Register("HeaderCellView")]
public class HeaderCellView : NSTextField, IViewFor<TreeItemViewModel>
{
    public HeaderCellView () 
    {
        this.OneWayBind (ViewModel, x => x.Name, x => x.StringValue);
    }

    public HeaderCellView(IntPtr ptr) : base(ptr) { }

    TreeItemViewModel _vm;

    public TreeItemViewModel ViewModel { get; set }

    object IViewFor.ViewModel
    {
        get { return this.ViewModel; }
        set { this.ViewModel = (TreeItemViewModel)value; }
    }
}

提前做了很多,

1 个答案:

答案 0 :(得分:0)

  

但是,我无法弄清楚我应该最好地实现哪些接口。

如果ReactiveUI没有内置的子类来帮助你完成一个类,你应该为你的类实现INotifyPropertyChanged,并在ViewModel发生变化时发出信号。这应该足以让绑定工作了!