From ba913a15b576335f085a0e8c6fea48051d35915d Mon Sep 17 00:00:00 2001
From: gumme <gumme@server.fake>
Date: Thu, 12 Jun 2014 11:32:51 +0200
Subject: [PATCH] Added support for using enums.

---
 .../Tests/Designer/ModelTests.cs              | 26 +++++++++++++++++--
 .../WpfDesign.XamlDom/Project/XamlDocument.cs |  2 +-
 2 files changed, 25 insertions(+), 3 deletions(-)

diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Tests/Designer/ModelTests.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Tests/Designer/ModelTests.cs
index a32806a5e9..84bcd70377 100644
--- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Tests/Designer/ModelTests.cs
+++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Tests/Designer/ModelTests.cs
@@ -668,6 +668,11 @@ namespace ICSharpCode.WpfDesign.Tests.Designer
 		}
 		
 		public void AddNativeTypeAsResource(object component, string expectedXamlValue)
+		{
+			AddTypeAsResource(component, expectedXamlValue, "Controls0:", new string[] { "xmlns:Controls0=\"clr-namespace:System;assembly=mscorlib\""} );
+		}
+		
+		public void AddTypeAsResource(object component, string expectedXamlValue, string typePrefix, String[] additionalXmlns)
 		{
 			DesignItem textBlock = CreateCanvasContext("<TextBlock/>");
 			DesignItem canvas = textBlock.Parent;
@@ -687,11 +692,11 @@ namespace ICSharpCode.WpfDesign.Tests.Designer
 			string typeName = component.GetType().Name;
 			
 			string expectedXaml = "<Canvas.Resources>\n" +
-								  "  <Controls0:" + typeName + " x:Key=\"res1\">" + expectedXamlValue + "</Controls0:" + typeName + ">\n" +
+								  "  <" + typePrefix + typeName + " x:Key=\"res1\">" + expectedXamlValue + "</" + typePrefix + typeName + ">\n" +
 								  "</Canvas.Resources>\n" +
 								  "<TextBlock Tag=\"{StaticResource ResourceKey=res1}\" />";
 			
-			AssertCanvasDesignerOutput(expectedXaml, textBlock.Context, "xmlns:Controls0=\"clr-namespace:System;assembly=mscorlib\"");
+			AssertCanvasDesignerOutput(expectedXaml, textBlock.Context, additionalXmlns);
 			AssertLog("");
 		}
 		
@@ -736,6 +741,18 @@ namespace ICSharpCode.WpfDesign.Tests.Designer
 			const int i = 123;
 			AddNativeTypeAsResource(i, "123");
 		}
+		
+		[Test]
+		public void AddWpfEnumAsResource()
+		{
+			AddTypeAsResource(VerticalAlignment.Center, "Center", "", new string[0]);
+		}
+		
+		[Test]
+		public void AddCustomEnumAsResource()
+		{
+			AddTypeAsResource(MyEnum.One, "One", "t:", new string[0]);
+		}
 	}
 	
 	public class MyMultiConverter : IMultiValueConverter
@@ -760,4 +777,9 @@ namespace ICSharpCode.WpfDesign.Tests.Designer
 			set { stringProp = value; }
 		}
 	}
+	
+	public enum MyEnum
+	{
+		One, Two
+	}
 }
diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.XamlDom/Project/XamlDocument.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.XamlDom/Project/XamlDocument.cs
index 48ee85ec63..b517eea9f0 100644
--- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.XamlDom/Project/XamlDocument.cs
+++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.XamlDom/Project/XamlDocument.cs
@@ -275,7 +275,7 @@ namespace ICSharpCode.WpfDesign.XamlDom
 		
 		bool IsNativeType(object instance)
 		{
-			return instance.GetType().Assembly == typeof(String).Assembly;
+			return instance.GetType().Assembly == typeof(String).Assembly || instance.GetType().IsEnum;
 		}
 	}
 }