如何使用 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; }
}
}
提前感谢很多,
延斯
但是,我无法弄清楚我应该最好地实现哪些接口。
如果 ReactiveUI 没有内置的子类来帮助您解决类问题,则应为类实现INotifyPropertyChanged
,并在 ViewModel 更改时发出信号。这应该足以使绑定正常工作!