|
36 | 36 | using ICSharpCode.NRefactory.TypeSystem; |
37 | 37 | using ICSharpCode.SharpDevelop; |
38 | 38 | using ICSharpCode.SharpDevelop.Designer; |
39 | | -using ICSharpCode.SharpDevelop.Dom; |
40 | | -using ICSharpCode.SharpDevelop.Editor; |
41 | 39 | using ICSharpCode.SharpDevelop.Gui; |
42 | 40 | using ICSharpCode.SharpDevelop.Parser; |
43 | 41 | using ICSharpCode.SharpDevelop.Project; |
|
48 | 46 | using ICSharpCode.WpfDesign.Designer.PropertyGrid; |
49 | 47 | using ICSharpCode.WpfDesign.Designer.Services; |
50 | 48 | using ICSharpCode.WpfDesign.Designer.Xaml; |
51 | | -using ICSharpCode.WpfDesign.XamlDom; |
52 | 49 | using ICSharpCode.WpfDesign.AddIn.Options; |
53 | 50 |
|
54 | 51 | namespace ICSharpCode.WpfDesign.AddIn |
@@ -125,7 +122,48 @@ protected override void LoadInternal(OpenedFile file, System.IO.Stream stream) |
125 | 122 | context.Services.AddService(typeof(ChooseClassServiceBase), new IdeChooseClassService()); |
126 | 123 | }); |
127 | 124 | settings.TypeFinder = MyTypeFinder.Create(this.PrimaryFile); |
128 | | - try { |
| 125 | + settings.CurrentProjectAssemblyName = SD.ProjectService.CurrentProject.AssemblyName; |
| 126 | + |
| 127 | + try |
| 128 | + { |
| 129 | + if (WpfEditorOptions.EnableAppXamlParsing) |
| 130 | + { |
| 131 | + var appXaml = SD.ProjectService.CurrentProject.Items.FirstOrDefault(x => x.FileName.GetFileName().ToLower() == ("app.xaml")); |
| 132 | + if (appXaml != null) |
| 133 | + { |
| 134 | + var f = appXaml as FileProjectItem; |
| 135 | + OpenedFile a = SD.FileService.GetOrCreateOpenedFile(f.FileName); |
| 136 | + |
| 137 | + var xml = XmlReader.Create(a.OpenRead()); |
| 138 | + var doc = new XmlDocument(); |
| 139 | + doc.Load(xml); |
| 140 | + var node = doc.FirstChild.ChildNodes.Cast<XmlNode>().FirstOrDefault(x => x.Name == "Application.Resources"); |
| 141 | + |
| 142 | + foreach (XmlAttribute att in doc.FirstChild.Attributes.Cast<XmlAttribute>().ToList()) |
| 143 | + { |
| 144 | + if (att.Name.StartsWith("xmlns")) { |
| 145 | + foreach (var childNode in node.ChildNodes.OfType<XmlNode>()) { |
| 146 | + childNode.Attributes.Append(att); |
| 147 | + } |
| 148 | + } |
| 149 | + } |
| 150 | + |
| 151 | + var appXamlXml = XmlReader.Create(new StringReader(node.InnerXml)); |
| 152 | + var appxamlContext = new XamlDesignContext(appXamlXml, settings); |
| 153 | + |
| 154 | + //var parsed = XamlParser.Parse(appXamlXml, appxamlContext.ParserSettings); |
| 155 | + var dict = (ResourceDictionary) appxamlContext.RootItem.Component;// parsed.RootInstance; |
| 156 | + designer.DesignPanel.Resources.MergedDictionaries.Add(dict); |
| 157 | + } |
| 158 | + } |
| 159 | + } |
| 160 | + catch (Exception ex) |
| 161 | + { |
| 162 | + LoggingService.Error("Error in loading app.xaml", ex); |
| 163 | + } |
| 164 | + |
| 165 | + try |
| 166 | + { |
129 | 167 | settings.ReportErrors = UpdateTasks; |
130 | 168 | designer.LoadDesigner(r, settings); |
131 | 169 |
|
@@ -154,33 +192,6 @@ protected override void LoadInternal(OpenedFile file, System.IO.Stream stream) |
154 | 192 | } catch (Exception e) { |
155 | 193 | this.UserContent = new WpfDocumentError(e); |
156 | 194 | } |
157 | | - |
158 | | - try{ |
159 | | - if (WpfEditorOptions.EnableAppXamlParsing) { |
160 | | - var appXaml = SD.ProjectService.CurrentProject.Items.FirstOrDefault(x=>x.FileName.GetFileName().ToLower() == ("app.xaml")); |
161 | | - if (appXaml!=null){ |
162 | | - var f=appXaml as FileProjectItem; |
163 | | - OpenedFile a = SD.FileService.GetOrCreateOpenedFile(f.FileName); |
164 | | - |
165 | | - var xml = XmlReader.Create(a.OpenRead()); |
166 | | - var doc=new XmlDocument(); |
167 | | - doc.Load(xml); |
168 | | - var node = doc.FirstChild.ChildNodes.Cast<XmlNode>().FirstOrDefault(x=>x.Name=="Application.Resources"); |
169 | | - |
170 | | - foreach (XmlAttribute att in doc.FirstChild.Attributes.Cast<XmlAttribute>().ToList()) { |
171 | | - if (att.Name.StartsWith("xmlns")) |
172 | | - node.Attributes.Append(att); |
173 | | - } |
174 | | - |
175 | | - var appXamlXml = XmlReader.Create(new StringReader(node.InnerXml)); |
176 | | - var parsed = XamlParser.Parse(appXamlXml, ((XamlDesignContext) designer.DesignContext).ParserSettings); |
177 | | - var dict = (ResourceDictionary)parsed.RootInstance; |
178 | | - designer.DesignPanel.Resources.MergedDictionaries.Add(dict); |
179 | | - } |
180 | | - } |
181 | | - } catch (Exception ex) { |
182 | | - LoggingService.Error("Error in loading app.xaml", ex); |
183 | | - } |
184 | 195 | } |
185 | 196 | } |
186 | 197 |
|
|
0 commit comments