public nint GetHeight(EditorViewModel vm) { if (SizingInstance != null) { return(SizingInstance.GetHeight(vm)); } else { return(RowSize); } }
public override nfloat GetRowHeight(NSOutlineView outlineView, NSObject item) { EditorViewModel vm; PanelGroupViewModel group; string cellIdentifier; GetVMGroupCellItendifiterFromFacade(item, out vm, out group, out cellIdentifier); if (group != null) { return(24); } if (!this.registrations.TryGetValue(cellIdentifier, out EditorRegistration registration)) { registration = new EditorRegistration(); if (cellIdentifier == nameof(PanelHeaderEditorControl)) { registration.RowSize = 54; } else { NSView editorOrContainer = GetEditor(cellIdentifier, vm, outlineView); IEditorView view = ((editorOrContainer as EditorContainer)?.EditorView) ?? editorOrContainer as IEditorView; if (view == null) { registration.RowSize = 24; } else if (view.IsDynamicallySized) { registration.SizingInstance = view; } else { this.registrations[cellIdentifier] = registration = new EditorRegistration { RowSize = view.GetHeight(vm) }; this.firstCache[cellIdentifier] = view; } } this.registrations[cellIdentifier] = registration; } // The double cast below is needed for now, while the return value is type ObjCRuntime.nfloat // in order for the integral to floating point conversion to work properly. Later when ObjCRuntime.nfloat // is replaced with System.Runtime.InteropServices.NFloat that won't be needed (but can't hurt). nfloat rowHeight = (nfloat)(double)registration.GetHeight(vm); return(rowHeight); }
public override nfloat GetRowHeight(NSOutlineView outlineView, NSObject item) { EditorViewModel vm; PanelGroupViewModel group; string cellIdentifier; GetVMGroupCellItendifiterFromFacade(item, out vm, out group, out cellIdentifier); if (group != null) { return(24); } if (!this.registrations.TryGetValue(cellIdentifier, out EditorRegistration registration)) { registration = new EditorRegistration(); if (cellIdentifier == nameof(PanelHeaderEditorControl)) { registration.RowSize = 54; } else { NSView editorOrContainer = GetEditor(cellIdentifier, vm, outlineView); IEditorView view = ((editorOrContainer as EditorContainer)?.EditorView) ?? editorOrContainer as IEditorView; if (view == null) { registration.RowSize = 24; } else if (view.IsDynamicallySized) { registration.SizingInstance = view; } else { this.registrations[cellIdentifier] = registration = new EditorRegistration { RowSize = view.GetHeight(vm) }; this.firstCache[cellIdentifier] = view; } } this.registrations[cellIdentifier] = registration; } return(registration.GetHeight(vm)); }