Browse Source

XamlDesignItem now ICloneable is now implemented!

So for Example you can clone it in the Outline View
pull/52/head
jogibear9988 12 years ago committed by jkuehner
parent
commit
0b545636a3
  1. 20
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Xaml/XamlDesignContext.cs
  2. 10
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Xaml/XamlDesignItem.cs

20
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Xaml/XamlDesignContext.cs

@ -22,6 +22,7 @@ namespace ICSharpCode.WpfDesign.Designer.Xaml @@ -22,6 +22,7 @@ namespace ICSharpCode.WpfDesign.Designer.Xaml
{
readonly XamlDocument _doc;
readonly XamlDesignItem _rootItem;
readonly XamlParserSettings _parserSettings;
internal readonly XamlComponentService _componentService;
readonly XamlEditOperations _xamlEditOperations;
@ -81,11 +82,11 @@ namespace ICSharpCode.WpfDesign.Designer.Xaml @@ -81,11 +82,11 @@ namespace ICSharpCode.WpfDesign.Designer.Xaml
EditorManager.RegisterAssembly(designerAssembly);
}
XamlParserSettings parserSettings = new XamlParserSettings();
parserSettings.TypeFinder = loadSettings.TypeFinder;
parserSettings.CreateInstanceCallback = this.Services.ExtensionManager.CreateInstanceWithCustomInstanceFactory;
parserSettings.ServiceProvider = this.Services;
_doc = XamlParser.Parse(xamlReader, parserSettings);
_parserSettings = new XamlParserSettings();
_parserSettings.TypeFinder = loadSettings.TypeFinder;
_parserSettings.CreateInstanceCallback = this.Services.ExtensionManager.CreateInstanceWithCustomInstanceFactory;
_parserSettings.ServiceProvider = this.Services;
_doc = XamlParser.Parse(xamlReader, _parserSettings);
loadSettings.ReportErrors(xamlErrorService);
@ -106,7 +107,7 @@ namespace ICSharpCode.WpfDesign.Designer.Xaml @@ -106,7 +107,7 @@ namespace ICSharpCode.WpfDesign.Designer.Xaml
}
_xamlEditOperations=new XamlEditOperations(this,parserSettings);
_xamlEditOperations=new XamlEditOperations(this,_parserSettings);
}
@ -125,6 +126,13 @@ namespace ICSharpCode.WpfDesign.Designer.Xaml @@ -125,6 +126,13 @@ namespace ICSharpCode.WpfDesign.Designer.Xaml
get { return _rootItem; }
}
/// <summary>
/// Gets the parser Settings being used
/// </summary>
public XamlParserSettings ParserSettings {
get { return _parserSettings; }
}
/// <summary>
/// Opens a new change group used to batch several changes.
/// ChangeGroups work as transactions and are used to support the Undo/Redo system.

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

@ -147,7 +147,15 @@ namespace ICSharpCode.WpfDesign.Designer.Xaml @@ -147,7 +147,15 @@ namespace ICSharpCode.WpfDesign.Designer.Xaml
public override DesignItem Clone()
{
throw new NotImplementedException();
DesignItem item = null;
var xaml = XamlStaticTools.GetXaml(this.XamlObject);
XamlDesignItem rootItem = Context.RootItem as XamlDesignItem;
var obj = XamlParser.ParseSnippet(rootItem.XamlObject, xaml, ((XamlDesignContext) Context).ParserSettings);
if (obj != null)
{
item = ((XamlDesignContext)Context)._componentService.RegisterXamlComponentRecursive(obj);
}
return item;
}
}
}

Loading…
Cancel
Save