    

 ## On this page

  

 

 # Class VariableBasedBuilderViewModel

 Last update: 19.06.2026 

Namespace: [Phoenix.ComponentPlugInSDK.ViewModels](Phoenix.ComponentPlugInSDK.ViewModels.md)  
Assembly: Phoenix.ComponentPlugInSDK.dll

View model for the VariableBasedBuilderView.

```csharp
public class VariableBasedBuilderViewModel : AbstractPlugInViewModel<VariableBasedBuilderModel>, IPlugInViewModel, INotifyPropertyChanged


```

#### Inheritance

[object](https://learn.microsoft.com/dotnet/api/system.object) ← [AbstractPlugInViewModel&lt;VariableBasedBuilderModel&gt;](Phoenix.ComponentPlugInSDK.ViewModels.AbstractPlugInViewModel-1.md) ← [VariableBasedBuilderViewModel](Phoenix.ComponentPlugInSDK.ViewModels.VariableBasedBuilderViewModel.md)

#### Implements

[IPlugInViewModel](Phoenix.ComponentPlugInSDK.ViewModels.IPlugInViewModel.md), [INotifyPropertyChanged](https://learn.microsoft.com/dotnet/api/system.componentmodel.inotifypropertychanged)

#### Inherited Members

[AbstractPlugInViewModel&lt;VariableBasedBuilderModel&gt;.PropertyChanged](Phoenix.ComponentPlugInSDK.ViewModels.AbstractPlugInViewModel-1.PropertyChanged.md#Phoenix_ComponentPlugInSDK_ViewModels_AbstractPlugInViewModel_1_PropertyChanged), [AbstractPlugInViewModel&lt;VariableBasedBuilderModel&gt;.OnPropertyChanged(string)](Phoenix.ComponentPlugInSDK.ViewModels.AbstractPlugInViewModel-1.OnPropertyChanged.md#Phoenix_ComponentPlugInSDK_ViewModels_AbstractPlugInViewModel_1_OnPropertyChanged_System_String_), [AbstractPlugInViewModel&lt;VariableBasedBuilderModel&gt;.\_logger](Phoenix.ComponentPlugInSDK.ViewModels.AbstractPlugInViewModel-1._logger.md#Phoenix_ComponentPlugInSDK_ViewModels_AbstractPlugInViewModel_1__logger), [AbstractPlugInViewModel&lt;VariableBasedBuilderModel&gt;.\_showErrorAction](Phoenix.ComponentPlugInSDK.ViewModels.AbstractPlugInViewModel-1._showErrorAction.md#Phoenix_ComponentPlugInSDK_ViewModels_AbstractPlugInViewModel_1__showErrorAction), [AbstractPlugInViewModel&lt;VariableBasedBuilderModel&gt;.SaveCommand](Phoenix.ComponentPlugInSDK.ViewModels.AbstractPlugInViewModel-1.SaveCommand.md#Phoenix_ComponentPlugInSDK_ViewModels_AbstractPlugInViewModel_1_SaveCommand), [AbstractPlugInViewModel&lt;VariableBasedBuilderModel&gt;.OkCommand](Phoenix.ComponentPlugInSDK.ViewModels.AbstractPlugInViewModel-1.OkCommand.md#Phoenix_ComponentPlugInSDK_ViewModels_AbstractPlugInViewModel_1_OkCommand), [AbstractPlugInViewModel&lt;VariableBasedBuilderModel&gt;.IsReadOnly](Phoenix.ComponentPlugInSDK.ViewModels.AbstractPlugInViewModel-1.IsReadOnly.md#Phoenix_ComponentPlugInSDK_ViewModels_AbstractPlugInViewModel_1_IsReadOnly), [AbstractPlugInViewModel&lt;VariableBasedBuilderModel&gt;.IsNotReadOnly](Phoenix.ComponentPlugInSDK.ViewModels.AbstractPlugInViewModel-1.IsNotReadOnly.md#Phoenix_ComponentPlugInSDK_ViewModels_AbstractPlugInViewModel_1_IsNotReadOnly), [AbstractPlugInViewModel&lt;VariableBasedBuilderModel&gt;.ExternalMetadata](Phoenix.ComponentPlugInSDK.ViewModels.AbstractPlugInViewModel-1.ExternalMetadata.md#Phoenix_ComponentPlugInSDK_ViewModels_AbstractPlugInViewModel_1_ExternalMetadata), [AbstractPlugInViewModel&lt;VariableBasedBuilderModel&gt;.IsBusy](Phoenix.ComponentPlugInSDK.ViewModels.AbstractPlugInViewModel-1.IsBusy.md#Phoenix_ComponentPlugInSDK_ViewModels_AbstractPlugInViewModel_1_IsBusy), [AbstractPlugInViewModel&lt;VariableBasedBuilderModel&gt;.IsDirty](Phoenix.ComponentPlugInSDK.ViewModels.AbstractPlugInViewModel-1.IsDirty.md#Phoenix_ComponentPlugInSDK_ViewModels_AbstractPlugInViewModel_1_IsDirty), [AbstractPlugInViewModel&lt;VariableBasedBuilderModel&gt;.StatusColor](Phoenix.ComponentPlugInSDK.ViewModels.AbstractPlugInViewModel-1.StatusColor.md#Phoenix_ComponentPlugInSDK_ViewModels_AbstractPlugInViewModel_1_StatusColor), [AbstractPlugInViewModel&lt;VariableBasedBuilderModel&gt;.StatusMessage](Phoenix.ComponentPlugInSDK.ViewModels.AbstractPlugInViewModel-1.StatusMessage.md#Phoenix_ComponentPlugInSDK_ViewModels_AbstractPlugInViewModel_1_StatusMessage), [AbstractPlugInViewModel&lt;VariableBasedBuilderModel&gt;.HasStatus](Phoenix.ComponentPlugInSDK.ViewModels.AbstractPlugInViewModel-1.HasStatus.md#Phoenix_ComponentPlugInSDK_ViewModels_AbstractPlugInViewModel_1_HasStatus), [AbstractPlugInViewModel&lt;VariableBasedBuilderModel&gt;.SetStatus(string, Color)](Phoenix.ComponentPlugInSDK.ViewModels.AbstractPlugInViewModel-1.SetStatus.md#Phoenix_ComponentPlugInSDK_ViewModels_AbstractPlugInViewModel_1_SetStatus_System_String_System_Windows_Media_Color_), [AbstractPlugInViewModel&lt;VariableBasedBuilderModel&gt;.InputVariables](Phoenix.ComponentPlugInSDK.ViewModels.AbstractPlugInViewModel-1.InputVariables.md#Phoenix_ComponentPlugInSDK_ViewModels_AbstractPlugInViewModel_1_InputVariables), [AbstractPlugInViewModel&lt;VariableBasedBuilderModel&gt;.\_onInputsChanged()](Phoenix.ComponentPlugInSDK.ViewModels.AbstractPlugInViewModel-1._onInputsChanged.md#Phoenix_ComponentPlugInSDK_ViewModels_AbstractPlugInViewModel_1__onInputsChanged), [AbstractPlugInViewModel&lt;VariableBasedBuilderModel&gt;.MoveInputVariablesFrom(IEnumerable&lt;IRuntimeVariable&gt;)](Phoenix.ComponentPlugInSDK.ViewModels.AbstractPlugInViewModel-1.MoveInputVariablesFrom.md#Phoenix_ComponentPlugInSDK_ViewModels_AbstractPlugInViewModel_1_MoveInputVariablesFrom_System_Collections_Generic_IEnumerable_Phoenix_PaczAPI_IRuntimeVariable__), [AbstractPlugInViewModel&lt;VariableBasedBuilderModel&gt;.CloneInputVariablesFrom(IEnumerable&lt;IRuntimeVariable&gt;)](Phoenix.ComponentPlugInSDK.ViewModels.AbstractPlugInViewModel-1.CloneInputVariablesFrom.md#Phoenix_ComponentPlugInSDK_ViewModels_AbstractPlugInViewModel_1_CloneInputVariablesFrom_System_Collections_Generic_IEnumerable_Phoenix_PaczAPI_IRuntimeVariable__), [AbstractPlugInViewModel&lt;VariableBasedBuilderModel&gt;.OutputVariables](Phoenix.ComponentPlugInSDK.ViewModels.AbstractPlugInViewModel-1.OutputVariables.md#Phoenix_ComponentPlugInSDK_ViewModels_AbstractPlugInViewModel_1_OutputVariables), [AbstractPlugInViewModel&lt;VariableBasedBuilderModel&gt;.\_onOutputsChanged()](Phoenix.ComponentPlugInSDK.ViewModels.AbstractPlugInViewModel-1._onOutputsChanged.md#Phoenix_ComponentPlugInSDK_ViewModels_AbstractPlugInViewModel_1__onOutputsChanged), [AbstractPlugInViewModel&lt;VariableBasedBuilderModel&gt;.MoveOutputVariablesFrom(IEnumerable&lt;IRuntimeVariable&gt;)](Phoenix.ComponentPlugInSDK.ViewModels.AbstractPlugInViewModel-1.MoveOutputVariablesFrom.md#Phoenix_ComponentPlugInSDK_ViewModels_AbstractPlugInViewModel_1_MoveOutputVariablesFrom_System_Collections_Generic_IEnumerable_Phoenix_PaczAPI_IRuntimeVariable__), [AbstractPlugInViewModel&lt;VariableBasedBuilderModel&gt;.CloneOutputVariablesFrom(IEnumerable&lt;IRuntimeVariable&gt;)](Phoenix.ComponentPlugInSDK.ViewModels.AbstractPlugInViewModel-1.CloneOutputVariablesFrom.md#Phoenix_ComponentPlugInSDK_ViewModels_AbstractPlugInViewModel_1_CloneOutputVariablesFrom_System_Collections_Generic_IEnumerable_Phoenix_PaczAPI_IRuntimeVariable__), [AbstractPlugInViewModel&lt;VariableBasedBuilderModel&gt;.BuilderName](Phoenix.ComponentPlugInSDK.ViewModels.AbstractPlugInViewModel-1.BuilderName.md#Phoenix_ComponentPlugInSDK_ViewModels_AbstractPlugInViewModel_1_BuilderName), [AbstractPlugInViewModel&lt;VariableBasedBuilderModel&gt;.WindowTitle](Phoenix.ComponentPlugInSDK.ViewModels.AbstractPlugInViewModel-1.WindowTitle.md#Phoenix_ComponentPlugInSDK_ViewModels_AbstractPlugInViewModel_1_WindowTitle), [AbstractPlugInViewModel&lt;VariableBasedBuilderModel&gt;.WindowIcon](Phoenix.ComponentPlugInSDK.ViewModels.AbstractPlugInViewModel-1.WindowIcon.md#Phoenix_ComponentPlugInSDK_ViewModels_AbstractPlugInViewModel_1_WindowIcon), [AbstractPlugInViewModel&lt;VariableBasedBuilderModel&gt;.SaveAsync()](Phoenix.ComponentPlugInSDK.ViewModels.AbstractPlugInViewModel-1.SaveAsync.md#Phoenix_ComponentPlugInSDK_ViewModels_AbstractPlugInViewModel_1_SaveAsync), [AbstractPlugInViewModel&lt;VariableBasedBuilderModel&gt;.\_handleError(Exception)](Phoenix.ComponentPlugInSDK.ViewModels.AbstractPlugInViewModel-1._handleError.md#Phoenix_ComponentPlugInSDK_ViewModels_AbstractPlugInViewModel_1__handleError_System_Exception_), [AbstractPlugInViewModel&lt;VariableBasedBuilderModel&gt;.SetVariablesAsPHXVariable(IEnumerable&lt;PHXVariable&gt;)](Phoenix.ComponentPlugInSDK.ViewModels.AbstractPlugInViewModel-1.SetVariablesAsPHXVariable.md#Phoenix_ComponentPlugInSDK_ViewModels_AbstractPlugInViewModel_1_SetVariablesAsPHXVariable_System_Collections_Generic_IEnumerable_Phoenix_ModelCenter_Common_PHXVariable__), [AbstractPlugInViewModel&lt;VariableBasedBuilderModel&gt;.GetVariablesAsPHXVariable(VariableValueScope)](Phoenix.ComponentPlugInSDK.ViewModels.AbstractPlugInViewModel-1.GetVariablesAsPHXVariable.md#Phoenix_ComponentPlugInSDK_ViewModels_AbstractPlugInViewModel_1_GetVariablesAsPHXVariable_Phoenix_ModelCenter_Common_Types_VariableValueScope_), [object.ToString()](https://learn.microsoft.com/dotnet/api/system.object.tostring), [object.Equals(object)](https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)), [object.Equals(object, object)](https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)), [object.ReferenceEquals(object, object)](https://learn.microsoft.com/dotnet/api/system.object.referenceequals), [object.GetHashCode()](https://learn.microsoft.com/dotnet/api/system.object.gethashcode), [object.GetType()](https://learn.microsoft.com/dotnet/api/system.object.gettype), [object.MemberwiseClone()](https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone)

## Constructors

[VariableBasedBuilderViewModel(VariableBasedBuilderModel, ILogger, string, Func&lt;VariableBasedBuilderModel, Task&gt;, Func&lt;string, VariableBasedBuilderViewModel, Task&gt;, Action, Action&lt;Exception&gt;, Uri)](Phoenix.ComponentPlugInSDK.ViewModels.VariableBasedBuilderViewModel.-ctor.md#Phoenix_ComponentPlugInSDK_ViewModels_VariableBasedBuilderViewModel__ctor_Phoenix_ComponentPlugInSDK_Models_VariableBasedBuilderModel_Microsoft_Extensions_Logging_ILogger_System_String_System_Func_Phoenix_ComponentPlugInSDK_Models_VariableBasedBuilderModel_System_Threading_Tasks_Task__System_Func_System_String_Phoenix_ComponentPlugInSDK_ViewModels_VariableBasedBuilderViewModel_System_Threading_Tasks_Task__System_Action_System_Action_System_Exception__System_Uri_)

Constructor.

## Properties

[ExtractionFolder](Phoenix.ComponentPlugInSDK.ViewModels.VariableBasedBuilderViewModel.ExtractionFolder.md#Phoenix_ComponentPlugInSDK_ViewModels_VariableBasedBuilderViewModel_ExtractionFolder)

The folder where the files exist. May be a temporary folder, or the original

[FilePath](Phoenix.ComponentPlugInSDK.ViewModels.VariableBasedBuilderViewModel.FilePath.md#Phoenix_ComponentPlugInSDK_ViewModels_VariableBasedBuilderViewModel_FilePath)

The File path to a file the Builder can open. If the path is within the extraction folder this will return a relative path, otherwise the path will be an absolute path to the file.

[FilePathAbsolute](Phoenix.ComponentPlugInSDK.ViewModels.VariableBasedBuilderViewModel.FilePathAbsolute.md#Phoenix_ComponentPlugInSDK_ViewModels_VariableBasedBuilderViewModel_FilePathAbsolute)

The Absolute Path to the `Phoenix.ComponentPlugInSDK.ViewModels.VariableBasedBuilderViewModel.FilePath`

[FileSelectionHeader](Phoenix.ComponentPlugInSDK.ViewModels.VariableBasedBuilderViewModel.FileSelectionHeader.md#Phoenix_ComponentPlugInSDK_ViewModels_VariableBasedBuilderViewModel_FileSelectionHeader)

The header to use above the file selection dialog.

[OpenFileCommand](Phoenix.ComponentPlugInSDK.ViewModels.VariableBasedBuilderViewModel.OpenFileCommand.md#Phoenix_ComponentPlugInSDK_ViewModels_VariableBasedBuilderViewModel_OpenFileCommand)

Command to tell the builder to open a file

## Methods

[\_onInputsChanged()](Phoenix.ComponentPlugInSDK.ViewModels.VariableBasedBuilderViewModel._onInputsChanged.md#Phoenix_ComponentPlugInSDK_ViewModels_VariableBasedBuilderViewModel__onInputsChanged)

This function will be called when the `Phoenix.ComponentPlugInSDK.ViewModels.AbstractPlugInViewModel`1.InputVariables` change to allow derived classes to notify the UI.

[\_onOutputsChanged()](Phoenix.ComponentPlugInSDK.ViewModels.VariableBasedBuilderViewModel._onOutputsChanged.md#Phoenix_ComponentPlugInSDK_ViewModels_VariableBasedBuilderViewModel__onOutputsChanged)

This function will be called when the `Phoenix.ComponentPlugInSDK.ViewModels.AbstractPlugInViewModel`1.InputVariables` change to allow derived classes to notify the UI.