如何使用 NSTextField 和 NSTableCellView 的子类与 ReactiveUI

本文关键字:子类 ReactiveUI NSTableCellView 何使用 NSTextField | 更新日期: 2023-09-27 18:30:59

我目前正在将SideBarDemo转换为C#和MonoMac,并结合ReactiveUI。我有两个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; }
    }
}

提前感谢很多,

延斯

如何使用 NSTextField 和 NSTableCellView 的子类与 ReactiveUI

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

如果 ReactiveUI 没有内置的子类来帮助您解决类问题,则应为类实现INotifyPropertyChanged,并在 ViewModel 更改时发出信号。这应该足以使绑定正常工作!