/// <summary> /// Initalized the correct tempalte based on the type. /// </summary> private void InitalizeTemplate() { DestroyTemplate(); // Get value from view model. var viewModelPropertyValue = viewModelProperty.GetValue(viewModel, null); if (viewModelPropertyValue == null) { throw new ApplicationException("Cannot bind to null property in view: " + viewModelPropertyName); } // Select template. var viewModelValueType = viewModelPropertyValue.GetType().Name; TemplateBinding selectedTemplate = null; if (!availableTemplates.TryGetValue(viewModelValueType, out selectedTemplate)) { throw new ApplicationException("Cannot find matching template for: " + viewModelValueType); } // Setup selected template. initalizedTemplate = Instantiate(selectedTemplate); initalizedTemplate.transform.SetParent(transform, false); initalizedTemplate.gameObject.SetActive(true); initalizedTemplate.InitChildBindings(viewModelPropertyValue); }
/// <summary> /// Destroys the instantiated template. /// </summary> private void DestroyTemplate() { if (initalizedTemplate == null) { return; } Destroy(initalizedTemplate.gameObject); initalizedTemplate = null; }