Browse Source

Merge pull request #263 from gumme/WpfDesignerNameFix

Fixed bug with name changes not saved to xaml source
pull/315/head
Siegfried Pammer 12 years ago
parent
commit
a2f64d0ab9
  1. 60
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Xaml/XamlDesignItem.cs

60
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Xaml/XamlDesignItem.cs

@ -48,9 +48,20 @@ namespace ICSharpCode.WpfDesign.Designer.Xaml @@ -48,9 +48,20 @@ namespace ICSharpCode.WpfDesign.Designer.Xaml
get { return _xamlObject.ElementType; }
}
void SetNameInternal(string newName)
{
_xamlObject.Name = newName;
}
public override string Name {
get { return _xamlObject.Name; }
set { _xamlObject.Name = value; }
set {
UndoService undoService = this.Services.GetService<UndoService>();
if (undoService != null)
undoService.Execute(new SetNameAction(this, value));
else
SetNameInternal(value);
}
}
public override string Key {
@ -174,5 +185,52 @@ namespace ICSharpCode.WpfDesign.Designer.Xaml @@ -174,5 +185,52 @@ namespace ICSharpCode.WpfDesign.Designer.Xaml
}
return item;
}
sealed class SetNameAction : ITransactionItem
{
XamlDesignItem designItem;
string oldName;
string newName;
public SetNameAction(XamlDesignItem designItem, string newName)
{
this.designItem = designItem;
this.newName = newName;
oldName = designItem.Name;
}
public string Title {
get {
return "Set name";
}
}
public void Do()
{
designItem.SetNameInternal(newName);
}
public void Undo()
{
designItem.SetNameInternal(oldName);
}
public System.Collections.Generic.ICollection<DesignItem> AffectedElements {
get {
return new DesignItem[] { designItem };
}
}
public bool MergeWith(ITransactionItem other)
{
SetNameAction o = other as SetNameAction;
if (o != null && designItem == o.designItem) {
newName = o.newName;
return true;
}
return false;
}
}
}
}

Loading…
Cancel
Save