From db8f88c563d449efedd238d4b2ab8e2d820d561e Mon Sep 17 00:00:00 2001 From: Daniel Kraus Date: Mon, 3 Aug 2015 06:32:05 +0200 Subject: [PATCH] Fix SettingsViewModelTest.CannotAddChildElementToFormatElement. --- Tests/ViewModels/SettingsViewModelTest.cs | 2 +- .../Controller/Elements/ControlElementBase.cs | 4 +++- .../ViewModels/ControlElementViewModel.cs | 16 +++++++++------- .../ViewModels/FormatElementViewModel.cs | 2 +- zaaReloaded2/ViewModels/SettingsViewModel.cs | 13 ++++++++++++- 5 files changed, 26 insertions(+), 11 deletions(-) diff --git a/Tests/ViewModels/SettingsViewModelTest.cs b/Tests/ViewModels/SettingsViewModelTest.cs index 65a1d56..58c7c89 100755 --- a/Tests/ViewModels/SettingsViewModelTest.cs +++ b/Tests/ViewModels/SettingsViewModelTest.cs @@ -58,7 +58,7 @@ namespace Tests.ViewModels parent.IsSelected = true; Assert.IsTrue(_settingsVM.AddChildElementCommand.CanExecute(null)); FormatElementViewModel child = new FormatElementViewModel(new Items()); - parent.AddChildElement(child); + _settingsVM.AddChildElementViewModel(parent, child); parent.IsSelected = false; child.IsSelected = true; Assert.IsFalse(_settingsVM.AddChildElementCommand.CanExecute(null)); diff --git a/zaaReloaded2/Controller/Elements/ControlElementBase.cs b/zaaReloaded2/Controller/Elements/ControlElementBase.cs index f23b9de..65a4564 100755 --- a/zaaReloaded2/Controller/Elements/ControlElementBase.cs +++ b/zaaReloaded2/Controller/Elements/ControlElementBase.cs @@ -31,7 +31,9 @@ namespace zaaReloaded2.Controller.Elements /// public IList FormatElements { get; private set; } - public ControlElementBase() { } + public ControlElementBase() + : this(new List()) + { } public ControlElementBase(IList formatElements) { diff --git a/zaaReloaded2/ViewModels/ControlElementViewModel.cs b/zaaReloaded2/ViewModels/ControlElementViewModel.cs index c5452b1..dc93d18 100755 --- a/zaaReloaded2/ViewModels/ControlElementViewModel.cs +++ b/zaaReloaded2/ViewModels/ControlElementViewModel.cs @@ -26,24 +26,26 @@ using System.Collections.ObjectModel; namespace zaaReloaded2.ViewModels { - class ControlElementViewModel : ElementViewModel + public class ControlElementViewModel : ElementViewModel { #region Properties - public ObservableCollection Elements - { - get { return null; } - } + /// + /// Gets a collection of child ElementViewModels. + /// + public ObservableCollection Elements { get; protected set; } #endregion #region Constructors - public ControlElementViewModel() : base() { } + public ControlElementViewModel() : this(null) { } public ControlElementViewModel(ControlElementBase controlElement) : base(controlElement) - { } + { + Elements = new ObservableCollection(); + } #endregion diff --git a/zaaReloaded2/ViewModels/FormatElementViewModel.cs b/zaaReloaded2/ViewModels/FormatElementViewModel.cs index a7205db..5dbe16a 100755 --- a/zaaReloaded2/ViewModels/FormatElementViewModel.cs +++ b/zaaReloaded2/ViewModels/FormatElementViewModel.cs @@ -24,7 +24,7 @@ using zaaReloaded2.Controller.Elements; namespace zaaReloaded2.ViewModels { - class FormatElementViewModel : ElementViewModel + public class FormatElementViewModel : ElementViewModel { #region Public properties diff --git a/zaaReloaded2/ViewModels/SettingsViewModel.cs b/zaaReloaded2/ViewModels/SettingsViewModel.cs index c662f1b..81c6250 100755 --- a/zaaReloaded2/ViewModels/SettingsViewModel.cs +++ b/zaaReloaded2/ViewModels/SettingsViewModel.cs @@ -218,6 +218,17 @@ namespace zaaReloaded2.ViewModels Elements.Add(elementViewModel); } + /// + /// Wires the OnProperty changed event of an ElementViewModel's + /// wrapped model and adds the view model as a child of another + /// view model. + /// + public void AddChildElementViewModel(ControlElementViewModel parent, FormatElementViewModel child) + { + child.PropertyChanged += ElementViewModel_PropertyChanged; + parent.AddChildElement(child); + } + #endregion #region Private methods @@ -246,7 +257,7 @@ namespace zaaReloaded2.ViewModels void ElementViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { ElementViewModel vm = sender as ElementViewModel; - if (vm != null) + if (vm != null && e.PropertyName == "IsSelected") { SelectedElement = vm.IsSelected ? vm : null; }