Fix views and view models.

This commit is contained in:
Daniel Kraus
2015-08-07 21:37:14 +02:00
parent edaf88c4cd
commit bde85e5651
14 changed files with 419 additions and 19 deletions

View File

@ -96,7 +96,7 @@ namespace zaaReloaded2.ViewModels
Categories = new List<CategoryViewModel>();
if (allowControlElements)
{
Categories.Add(
AddCategory(
new CategoryViewModel(
"Kontroll-Elemente",
new Collection<ViewModelBase>()
@ -108,7 +108,7 @@ namespace zaaReloaded2.ViewModels
)
);
}
Categories.Add(
AddCategory(
new CategoryViewModel(
"Ausgabe-Elemente",
new Collection<ViewModelBase>()
@ -124,6 +124,12 @@ namespace zaaReloaded2.ViewModels
#region Private methods
void AddCategory(CategoryViewModel category)
{
category.PropertyChanged += ElementViewModel_PropertyChanged;
Categories.Add(category);
}
/// <summary>
/// Creates a new ControlElementViewModel that wraps a ControlElementBase
/// object. The display string of the ControlElementViewModel is taken
@ -152,13 +158,16 @@ namespace zaaReloaded2.ViewModels
void ElementViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
if (e.PropertyName == "IsSelected")
// Casting sender as ElementViewModel may result in Null, but this
// is a desired effect because category headings may be selected
// in a view, but are not valid ElementViewModels that we could
// 'choose'. In addition, when an element is selected, another one
// is deselected, and the event triggers twice, once for the selected
// element and once for the deselected one.
ElementViewModel elementVM = sender as ElementViewModel;
if (elementVM != null && elementVM.IsSelected && e.PropertyName == "IsSelected")
{
// Casting sender as ElementViewModel may result in Null, but this
// is a desired effect because category headings may be selected
// in a view, but are not valid ElementViewModels that we could
// 'choose'.
Selected = sender as ElementViewModel;
Selected = elementVM;
}
}
@ -172,7 +181,7 @@ namespace zaaReloaded2.ViewModels
bool CanChooseElement()
{
return Selected != null;
return Selected != null && Selected.IsSelected == true;
}
#endregion

View File

@ -199,6 +199,10 @@ namespace zaaReloaded2.ViewModels
SettingsViewModel vm = new SettingsViewModel(s);
AddSettingsViewModel(vm);
}
RequestCloseView += (sender, args) =>
{
_repository.Store();
};
}
#endregion