Как использовать подклассы NSTextField и NSTableCellView с ReactiveUI
В настоящее время я конвертирую 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; }
}
}
Большое заранее,
Jens
1 ответ
Однако я не мог понять, какие интерфейсы мне лучше всего реализовать.
Если ReactiveUI не имеет встроенного подкласса, который помогает вам в классе, вы должны реализовать INotifyPropertyChanged
для вашего класса, и сигнал, когда ViewModel меняется. Этого должно быть достаточно, чтобы работали привязки!