Class AbstractModelBasedBuilderUI<RUNNER, MODEL>
Last update: 19.06.2026Namespace: Phoenix.ComponentPlugInSDK
Assembly: Phoenix.ComponentPlugInSDK.dll
This abstract base class extends upon Phoenix.ComponentPlugInSDK.AbstractBuilderUI1` with the ability to load and save
from a model object. Typically used by plug-ins that want to use MVVM or similar pattern.
There are two ways that derived classes can interject code into the save/load process. The MODEL itself will get
a chance to save first. Then, the abstract function Phoenix.ComponentPlugInSDK.AbstractModelBasedBuilderUI2.SaveToPaczAsync(Phoenix.PaczAPI.IExtractedPacz)orPhoenix.ComponentPlugInSDK.AbstractModelBasedBuilderUI2.LoadFromPaczAsync(Phoenix.PaczAPI.IExtractedPacz)
will be called. The Model is typically used by classes such as Phoenix.ComponentPlugInSDK.AbstractScriptBasedBuilderUI2andPhoenix.ComponentPlugInSDK.AbstractVariableBasedBuilderUI2 to provide overarching capabilities.
Phoenix.ComponentPlugInSDK.AbstractModelBasedBuilderUI2.SaveToPaczAsync(Phoenix.PaczAPI.IExtractedPacz)andPhoenix.ComponentPlugInSDK.AbstractModelBasedBuilderUI2.LoadFromPaczAsync(Phoenix.PaczAPI.IExtractedPacz) are typically left abstract until
the actual implementation class as a quick way for them to add on additional save/load operations without needing to implement
their own Model.
public abstract class AbstractModelBasedBuilderUI<RUNNER, MODEL> : AbstractBuilderUI<RUNNER>, IHarnessBuilderUI<RUNNER>, IHarnessBuilderUIBase, IDisposable where RUNNER : IHarnessRunner where MODEL : IBuilderUIModel, new()
Type Parameters
RUNNER
The type of IHarnessRunner that this builder edits.
MODEL
Type type of model object that this class will contain. It must have a no-argument
constructor and implement Phoenix.ComponentPlugInSDK.Models.IBuilderUIModel.
Inheritance
object ← AbstractDisposable ← AbstractBuilderUI<RUNNER> ← AbstractModelBasedBuilderUI<RUNNER, MODEL>
Implements
IHarnessBuilderUI<RUNNER>, IHarnessBuilderUIBase, IDisposable
Inherited Members
AbstractBuilderUI<RUNNER>._window, AbstractBuilderUI<RUNNER>.Dispose(bool), AbstractBuilderUI<RUNNER>.ComponentName, AbstractBuilderUI<RUNNER>.ComponentIcon, AbstractBuilderUI<RUNNER>.CreateWindow(), AbstractBuilderUI<RUNNER>.AddMenuItem(ItemsControl, string, RoutedEventHandler), AbstractBuilderUI<RUNNER>.AddAsyncMenuItem(ItemsControl, string, AbstractBuilderUI<RUNNER>.RoutedEventHandlerAsync), AbstractBuilderUI<RUNNER>.AddMenuItem(ItemsControl, string, ImageType, bool, RoutedEventHandler), AbstractBuilderUI<RUNNER>.AddAsyncMenuItem(ItemsControl, string, ImageType, bool, AbstractBuilderUI<RUNNER>.RoutedEventHandlerAsync), AbstractBuilderUI<RUNNER>.AddMenuItem(ItemsControl, string, ImageSource, bool, RoutedEventHandler), AbstractBuilderUI<RUNNER>.AddAsyncMenuItem(ItemsControl, string, ImageSource, bool, AbstractBuilderUI<RUNNER>.RoutedEventHandlerAsync), AbstractBuilderUI<RUNNER>.SelectVariables(IEnumerable<IRuntimeVariable>, IEnumerable<IRuntimeVariable>, IPlugInViewModel, string, string, string), AbstractBuilderUI<RUNNER>.SelectVariables(AbstractVariableProvider, IPlugInViewModel, string), AbstractBuilderUI<RUNNER>.SetPaczIcon(Uri, string), AbstractBuilderUI<RUNNER>.HarnessType, AbstractBuilderUI<RUNNER>.WindowClosed, AbstractBuilderUI<RUNNER>.Host, AbstractBuilderUI<RUNNER>.ConstructAsync(IHarnessBuilderUIHost<RUNNER>), AbstractBuilderUI<RUNNER>.ShowAsync(), AbstractBuilderUI<RUNNER>.TrySaveAsync(), AbstractBuilderUI<RUNNER>.DisplayException(Exception), AbstractDisposable.disposed, AbstractDisposable.Dispose(), AbstractDisposable.IsDisposed, AbstractDisposable.Dispose(bool), object.ToString(), object.Equals(object), object.Equals(object, object), object.ReferenceEquals(object, object), object.GetHashCode(), object.GetType(), object.MemberwiseClone()
Properties
The actual model for this instance.
Methods
ConstructAsync(IHarnessBuilderUIHost<RUNNER>)
Derived classes typically do not need to override this behavior as they
can interject code in the Model and in Phoenix.ComponentPlugInSDK.AbstractModelBasedBuilderUI2.LoadFromPaczAsync(Phoenix.PaczAPI.IExtractedPacz)`.
Standard disposal.
LoadFromPaczAsync(IExtractedPacz)
Performs any necessary initialization of the Component Builder
SaveToPaczAsync(IExtractedPacz)
Allows derived classes to save their data to the pacz
Causes the model to be properly saved, and the host notified of the save. Not called automatically, it is up to derived classes to hook this up at the appropriate moments.