Multiple fixes for Views and ViewModels.
This commit is contained in:
@ -342,13 +342,24 @@ namespace zaaReloaded2.ViewModels
|
||||
{
|
||||
// Create a new element picker; it will automatically create and
|
||||
// send us a new element view model if one is chosen by the view.
|
||||
ElementPickerViewModel picker = new ElementPickerViewModel(true);
|
||||
ElementPickerViewModel picker = new ElementPickerViewModel(
|
||||
allowControlElements: IsTopLevelElement());
|
||||
picker.ElementChosenMessage.Sent += (sender, args) =>
|
||||
{
|
||||
ElementViewModel newVM = args.Content.ViewModel as ElementViewModel;
|
||||
AddElementViewModel(newVM);
|
||||
if (IsTopLevelElement())
|
||||
{
|
||||
AddElementViewModel(newVM);
|
||||
}
|
||||
else
|
||||
{
|
||||
// If the selected element is on the second level, it
|
||||
// must be a FormatElementViewModel.
|
||||
ControlElementViewModel parent = ((FormatElementViewModel)LastSelectedElement).Parent;
|
||||
AddChildElementViewModel(parent, newVM as FormatElementViewModel);
|
||||
}
|
||||
newVM.IsSelected = true;
|
||||
DoEditElement();
|
||||
if (newVM is FormatElementViewModel) DoEditElement();
|
||||
};
|
||||
AddElementMessage.Send(new ViewModelMessageContent(picker));
|
||||
}
|
||||
@ -389,11 +400,16 @@ namespace zaaReloaded2.ViewModels
|
||||
{
|
||||
// Replace the previously selected element with the new
|
||||
// one that we get from the ElementPickerViewModel.
|
||||
int index = Elements.IndexOf(LastSelectedElement);
|
||||
ElementViewModel newVM = args.Content.ViewModel as ElementViewModel;
|
||||
Elements.Insert(
|
||||
Elements.IndexOf(LastSelectedElement),
|
||||
newVM);
|
||||
Elements.Remove(LastSelectedElement);
|
||||
ControlElementBase oldModel = LastSelectedElement.RevealModelObject() as ControlElementBase;
|
||||
ControlElementBase newModel = newVM.RevealModelObject() as ControlElementBase;
|
||||
// Caveat: once we modify the Elements collection, LastSelectedElement will change!
|
||||
Elements.RemoveAt(index);
|
||||
Elements.Insert(index, newVM);
|
||||
newModel.Children = oldModel.Children;
|
||||
_settings.Elements.RemoveAt(index);
|
||||
_settings.Elements.Insert(index, newModel);
|
||||
newVM.PropertyChanged += ElementViewModel_PropertyChanged;
|
||||
newVM.IsSelected = true;
|
||||
};
|
||||
@ -452,12 +468,16 @@ namespace zaaReloaded2.ViewModels
|
||||
{
|
||||
if (IsTopLevelElement())
|
||||
{
|
||||
AddElementViewModel(LastSelectedElement.Clone() as ElementViewModel);
|
||||
ElementViewModel newControlVM = LastSelectedElement.Clone() as ElementViewModel;
|
||||
AddElementViewModel(newControlVM);
|
||||
newControlVM.IsSelected = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
FormatElementViewModel formatVM = LastSelectedElement as FormatElementViewModel;
|
||||
formatVM.Parent.AddChildElement(formatVM.Clone() as FormatElementViewModel);
|
||||
FormatElementViewModel originalVM = LastSelectedElement as FormatElementViewModel;
|
||||
FormatElementViewModel newFormatVM = originalVM.Clone() as FormatElementViewModel;
|
||||
originalVM.Parent.AddChildElement(newFormatVM);
|
||||
newFormatVM.IsSelected = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -492,7 +512,7 @@ namespace zaaReloaded2.ViewModels
|
||||
_settings.Elements.RemoveAt(index);
|
||||
_settings.Elements.Insert(
|
||||
index - 1,
|
||||
LastSelectedElement.RevealModelObject() as ElementBase);
|
||||
lastSelectedElement.RevealModelObject() as ElementBase);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -588,7 +608,7 @@ namespace zaaReloaded2.ViewModels
|
||||
_settings.Elements.RemoveAt(index);
|
||||
_settings.Elements.Insert(
|
||||
index + 1,
|
||||
LastSelectedElement.RevealModelObject() as ElementBase);
|
||||
lastSelectedElement.RevealModelObject() as ElementBase);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
Reference in New Issue
Block a user