diff --git a/samples/XamlDesigner/Document.cs b/samples/XamlDesigner/Document.cs
index 1079edf0a4..705c1046de 100644
--- a/samples/XamlDesigner/Document.cs
+++ b/samples/XamlDesigner/Document.cs
@@ -11,6 +11,7 @@ using System.Xml;
using ICSharpCode.WpfDesign;
using ICSharpCode.WpfDesign.Designer.Services;
using System.Diagnostics;
+using ICSharpCode.WpfDesign.XamlDom;
namespace ICSharpCode.XamlDesigner
{
@@ -196,7 +197,7 @@ namespace ICSharpCode.XamlDesigner
void UpdateXaml()
{
var sb = new StringBuilder();
- using (var xmlWriter = XmlWriter.Create(sb)) {
+ using (var xmlWriter = new XamlXmlWriter(sb)) {
DesignSurface.SaveDesigner(xmlWriter);
Text = XamlFormatter.Format(sb.ToString());
}
diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/LineExtensionBase.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/LineExtensionBase.cs
index 6a9c6242c4..eef5e6a063 100644
--- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/LineExtensionBase.cs
+++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/LineExtensionBase.cs
@@ -73,7 +73,7 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
public LineExtensionBase()
{
_surface = new Canvas();
- adornerPanel = new AdornerPanel();
+ adornerPanel = new AdornerPanel(){ MinWidth = 10, MinHeight = 10 };
adornerPanel.Order = AdornerOrder.Foreground;
adornerPanel.Children.Add(_surface);
Adorners.Add(adornerPanel);
@@ -142,7 +142,7 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
}
AdornerPanel ap = _surface.Parent as AdornerPanel;
-
+
_surface.Width = ap.Width;
_surface.Height = ap.Height;
diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/PathHandlerExtension.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/PathHandlerExtension.cs
index 042d329b86..7cdabd4f73 100644
--- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/PathHandlerExtension.cs
+++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/PathHandlerExtension.cs
@@ -580,7 +580,7 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
saveDesignItem = () =>
{
dd.Properties["StartPoint"].SetValue(((PathFigure)dd.Component).StartPoint);
- dd.Properties["Segments"].SetValue(((PathFigure)dd.Component).Segments);
+ //dd.Properties["Segments"].SetValue(((PathFigure)dd.Component).Segments);
};
list.Add(new PathPoint(figure.StartPoint, figure, null, (p) => figure.StartPoint = p, saveDesignItem, shape));
foreach (var s in figure.Segments) {
diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/PropertyGrid/Editors/NumberEditor.xaml.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/PropertyGrid/Editors/NumberEditor.xaml.cs
index 7ef21b23fa..88129aee9d 100644
--- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/PropertyGrid/Editors/NumberEditor.xaml.cs
+++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/PropertyGrid/Editors/NumberEditor.xaml.cs
@@ -117,16 +117,20 @@ namespace ICSharpCode.WpfDesign.Designer.PropertyGrid.Editors
Maximum = range.Max;
}
- if (Minimum == 0 && Maximum == 1) {
+ if (type == typeof(double) || type == typeof(decimal)) {
DecimalPlaces = 2;
- SmallChange = 0.01;
- LargeChange = 0.1;
- }
- else {
- ClearValue(DecimalPlacesProperty);
- ClearValue(SmallChangeProperty);
- ClearValue(LargeChangeProperty);
}
+
+// if (Minimum == 0 && Maximum == 1) {
+// DecimalPlaces = 2;
+// SmallChange = 0.01;
+// LargeChange = 0.1;
+// }
+// else {
+// ClearValue(DecimalPlacesProperty);
+// ClearValue(SmallChangeProperty);
+// ClearValue(LargeChangeProperty);
+// }
}
public override void OnApplyTemplate()
@@ -147,30 +151,30 @@ namespace ICSharpCode.WpfDesign.Designer.PropertyGrid.Editors
double val;
if(double.TryParse(textBox.Text, out val)){
if(PropertyNode.FirstProperty.TypeConverter.IsValid(textBox.Text)){
- if(val >= Minimum && val <= Maximum || double.IsNaN(val)){
- textBox.Foreground=Brushes.Black;
- textBox.ToolTip=textBox.Text;
- }else{
- textBox.Foreground = Brushes.DarkBlue;
- textBox.ToolTip = "Value should be in between "+Minimum+" and "+Maximum;
- }
- }else{
- textBox.Foreground = Brushes.DarkRed;
- textBox.ToolTip = "Cannot convert to Type : " + PropertyNode.FirstProperty.ReturnType.Name;
- }
- }else{
- textBox.Foreground = Brushes.DarkRed;
- textBox.ToolTip = string.IsNullOrWhiteSpace(textBox.Text)? null:"Value does not belong to any numeric type";
- }
-
+ if(val >= Minimum && val <= Maximum || double.IsNaN(val)){
+ textBox.Foreground=Brushes.Black;
+ textBox.ToolTip=textBox.Text;
+ }else{
+ textBox.Foreground = Brushes.DarkBlue;
+ textBox.ToolTip = "Value should be in between "+Minimum+" and "+Maximum;
+ }
+ }else{
+ textBox.Foreground = Brushes.DarkRed;
+ textBox.ToolTip = "Cannot convert to Type : " + PropertyNode.FirstProperty.ReturnType.Name;
+ }
+ }else{
+ textBox.Foreground = Brushes.DarkRed;
+ textBox.ToolTip = string.IsNullOrWhiteSpace(textBox.Text)? null:"Value does not belong to any numeric type";
+ }
+
}
ChangeGroup group;
protected override void OnDragStarted()
{
- group = PropertyNode.Context.OpenGroup("drag number",
- PropertyNode.Properties.Select(p => p.DesignItem).ToArray());
+ group = PropertyNode.Context.OpenGroup("drag number",
+ PropertyNode.Properties.Select(p => p.DesignItem).ToArray());
}
protected override void OnDragCompleted()
diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.XamlDom/Project/MarkupExtensionPrinter.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.XamlDom/Project/MarkupExtensionPrinter.cs
index aaea8be6e7..617a07df0f 100644
--- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.XamlDom/Project/MarkupExtensionPrinter.cs
+++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.XamlDom/Project/MarkupExtensionPrinter.cs
@@ -60,7 +60,7 @@ namespace ICSharpCode.WpfDesign.XamlDom
var p=obj.Properties.FirstOrDefault(x=>x.PropertyName=="Path");
if (p!=null && p.IsSet) {
sb.Append(" ");
- AppendPropertyValue(sb, p.PropertyValue);
+ AppendPropertyValue(sb, p.PropertyValue, false);
properties.Remove(p);
first = false;
}
@@ -69,7 +69,7 @@ namespace ICSharpCode.WpfDesign.XamlDom
var p=obj.Properties.FirstOrDefault(x=>x.PropertyName=="Name");
if (p!=null && p.IsSet) {
sb.Append(" ");
- AppendPropertyValue(sb, p.PropertyValue);
+ AppendPropertyValue(sb, p.PropertyValue, false);
properties.Remove(p);
first = false;
}
@@ -78,7 +78,7 @@ namespace ICSharpCode.WpfDesign.XamlDom
var p=obj.Properties.FirstOrDefault(x=>x.PropertyName=="ResourceKey");
if (p!=null && p.IsSet) {
sb.Append(" ");
- AppendPropertyValue(sb, p.PropertyValue);
+ AppendPropertyValue(sb, p.PropertyValue, false);
properties.Remove(p);
first = false;
}
@@ -96,13 +96,13 @@ namespace ICSharpCode.WpfDesign.XamlDom
sb.Append(property.GetNameForMarkupExtension());
sb.Append("=");
- AppendPropertyValue(sb, property.PropertyValue);
+ AppendPropertyValue(sb, property.PropertyValue, property.ReturnType == typeof(string));
}
sb.Append("}");
return sb.ToString();
}
- private static void AppendPropertyValue(StringBuilder sb, XamlPropertyValue value)
+ private static void AppendPropertyValue(StringBuilder sb, XamlPropertyValue value, bool isStringProperty)
{
var textValue = value as XamlTextValue;
if (textValue != null) {
@@ -113,7 +113,10 @@ namespace ICSharpCode.WpfDesign.XamlDom
sb.Append('\'');
}
- sb.Append(text.Replace("\\", "\\\\"));
+ if (isStringProperty)
+ sb.Append(text.Replace("\\", "\\\\").Replace("{", "\\{").Replace("}", "\\}"));
+ else
+ sb.Append(text.Replace("\\", "\\\\"));
if(containsSpace) {
sb.Append('\'');
diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.XamlDom/Project/WpfDesign.XamlDom.csproj b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.XamlDom/Project/WpfDesign.XamlDom.csproj
index 36e1b5c8e9..52c406c145 100644
--- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.XamlDom/Project/WpfDesign.XamlDom.csproj
+++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.XamlDom/Project/WpfDesign.XamlDom.csproj
@@ -94,5 +94,6 @@
+
\ No newline at end of file
diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.XamlDom/Project/XamlXmlWriter.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.XamlDom/Project/XamlXmlWriter.cs
new file mode 100644
index 0000000000..c85dc81dc3
--- /dev/null
+++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.XamlDom/Project/XamlXmlWriter.cs
@@ -0,0 +1,156 @@
+/*
+ * Created by SharpDevelop.
+ * User: jkuehner
+ * Date: 30.01.2015
+ * Time: 09:56
+ *
+ * To change this template use Tools | Options | Coding | Edit Standard Headers.
+ */
+using System;
+using System.Xml;
+
+namespace ICSharpCode.WpfDesign.XamlDom
+{
+ ///
+ /// Description of XamlXmlWriter.
+ ///
+ public class XamlXmlWriter : XmlWriter
+ {
+ protected XmlWriter xmlWriter;
+
+ public XamlXmlWriter(System.Text.StringBuilder stringBuilder)
+ {
+ this.xmlWriter = XmlWriter.Create(stringBuilder);
+ }
+
+ #region implemented abstract members of XmlWriter
+
+ public override void WriteStartDocument()
+ {
+ xmlWriter.WriteStartDocument();
+ }
+
+ public override void WriteStartDocument(bool standalone)
+ {
+ xmlWriter.WriteStartDocument(standalone);
+ }
+
+ public override void WriteEndDocument()
+ {
+ xmlWriter.WriteEndDocument();
+ }
+
+ public override void WriteDocType(string name, string pubid, string sysid, string subset)
+ {
+ xmlWriter.WriteDocType(name, pubid, sysid, subset);
+ }
+
+ public override void WriteStartElement(string prefix, string localName, string ns)
+ {
+ xmlWriter.WriteStartElement(prefix, localName, ns);
+ }
+
+ public override void WriteEndElement()
+ {
+ xmlWriter.WriteEndElement();
+ }
+
+ public override void WriteFullEndElement()
+ {
+ xmlWriter.WriteFullEndElement();
+ }
+
+ public override void WriteStartAttribute(string prefix, string localName, string ns)
+ {
+ xmlWriter.WriteStartAttribute(prefix, localName, ns);
+ }
+
+ public override void WriteEndAttribute()
+ {
+ xmlWriter.WriteEndAttribute();
+ }
+
+ public override void WriteCData(string text)
+ {
+ xmlWriter.WriteCData(text);
+ }
+
+ public override void WriteComment(string text)
+ {
+ xmlWriter.WriteComment(text);
+ }
+
+ public override void WriteProcessingInstruction(string name, string text)
+ {
+ xmlWriter.WriteProcessingInstruction(name, text);
+ }
+
+ public override void WriteEntityRef(string name)
+ {
+ xmlWriter.WriteEntityRef(name);
+ }
+
+ public override void WriteCharEntity(char ch)
+ {
+ xmlWriter.WriteCharEntity(ch);
+ }
+
+ public override void WriteWhitespace(string ws)
+ {
+ xmlWriter.WriteWhitespace(ws);
+ }
+
+ public override void WriteString(string text)
+ {
+ xmlWriter.WriteString(text.Replace("&","&").Replace("\"","""));
+ }
+
+ public override void WriteSurrogateCharEntity(char lowChar, char highChar)
+ {
+ xmlWriter.WriteSurrogateCharEntity(lowChar, highChar);
+ }
+
+ public override void WriteChars(char[] buffer, int index, int count)
+ {
+ xmlWriter.WriteChars(buffer, index, count);
+ }
+
+ public override void WriteRaw(char[] buffer, int index, int count)
+ {
+ xmlWriter.WriteRaw(buffer, index, count);
+ }
+
+ public override void WriteRaw(string data)
+ {
+ xmlWriter.WriteRaw(data);
+ }
+
+ public override void WriteBase64(byte[] buffer, int index, int count)
+ {
+ xmlWriter.WriteBase64(buffer, index, count);
+ }
+
+ public override void Close()
+ {
+ xmlWriter.Close();
+ }
+
+ public override void Flush()
+ {
+ xmlWriter.Flush();
+ }
+
+ public override string LookupPrefix(string ns)
+ {
+ return xmlWriter.LookupPrefix(ns);
+ }
+
+ public override WriteState WriteState {
+ get {
+ return xmlWriter.WriteState;
+ }
+ }
+
+ #endregion
+ }
+}