diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/DesignPanel.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/DesignPanel.cs
index a2b9a6d59c..da4e767c12 100644
--- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/DesignPanel.cs
+++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/DesignPanel.cs
@@ -189,30 +189,42 @@ namespace ICSharpCode.WpfDesign.Designer
/// Enables / Disables the Snapline Placement
///
private bool _useSnaplinePlacement = true;
- public bool UseSnaplinePlacement
- {
+ public bool UseSnaplinePlacement {
get { return _useSnaplinePlacement; }
- set { _useSnaplinePlacement = value; OnPropertyChanged("UseSnaplinePlacement"); }
+ set {
+ if (_useSnaplinePlacement != value) {
+ _useSnaplinePlacement = value;
+ OnPropertyChanged("UseSnaplinePlacement");
+ }
+ }
}
///
/// Enables / Disables the Raster Placement
///
private bool _useRasterPlacement = false;
- public bool UseRasterPlacement
- {
+ public bool UseRasterPlacement {
get { return _useRasterPlacement; }
- set { _useRasterPlacement = value; OnPropertyChanged("UseRasterPlacement"); }
+ set {
+ if (_useRasterPlacement != value) {
+ _useRasterPlacement = value;
+ OnPropertyChanged("UseRasterPlacement");
+ }
+ }
}
///
/// Sets the with of the Raster when using Raster Placement
///
private int _rasterWidth = 5;
- public int RasterWidth
- {
+ public int RasterWidth {
get { return _rasterWidth; }
- set { _rasterWidth = value; OnPropertyChanged("RasterWidth"); }
+ set {
+ if (_rasterWidth != value) {
+ _rasterWidth = value;
+ OnPropertyChanged("RasterWidth");
+ }
+ }
}
#endregion
diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/RasterPlacementBehavior.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/RasterPlacementBehavior.cs
index 7cb41e6be4..9a65c01106 100644
--- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/RasterPlacementBehavior.cs
+++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/RasterPlacementBehavior.cs
@@ -13,21 +13,18 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
{
public class RasterPlacementBehavior : DefaultPlacementBehavior
{
- int raster = 5;
-
Canvas surface;
AdornerPanel adornerPanel;
- private bool rasterDrawn = false;
+ bool rasterDrawn = false;
+ int raster = 5;
public override void BeginPlacement(PlacementOperation operation)
{
base.BeginPlacement(operation);
-
- try {
- raster = ((DesignPanel) ExtendedItem.Services.DesignPanel).RasterWidth;
- }
- catch (Exception ex)
- { }
+
+ DesignPanel designPanel = ExtendedItem.Services.DesignPanel as DesignPanel;
+ if (designPanel != null)
+ raster = designPanel.RasterWidth;
CreateSurface(operation);
}
@@ -79,7 +76,8 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
base.BeforeSetPosition(operation);
if (surface == null) return;
- if (!((DesignPanel) ExtendedItem.Services.DesignPanel).UseRasterPlacement)
+ DesignPanel designPanel = ExtendedItem.Services.DesignPanel as DesignPanel;
+ if (designPanel == null || !designPanel.UseRasterPlacement)
return;
if (Keyboard.IsKeyDown(Key.LeftCtrl))
diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/SnaplinePlacementBehavior.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/SnaplinePlacementBehavior.cs
index b15c53b1fe..3280415aaf 100644
--- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/SnaplinePlacementBehavior.cs
+++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/SnaplinePlacementBehavior.cs
@@ -59,7 +59,8 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
base.BeforeSetPosition(operation);
if (surface == null) return;
- if (!((DesignPanel)ExtendedItem.Services.DesignPanel).UseSnaplinePlacement)
+ DesignPanel designPanel = ExtendedItem.Services.DesignPanel as DesignPanel;
+ if (designPanel == null || !designPanel.UseSnaplinePlacement)
return;
surface.Children.Clear();
diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Tests/Designer/ModelTestHelper.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Tests/Designer/ModelTestHelper.cs
index c4c61608f2..5a7e81211b 100644
--- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Tests/Designer/ModelTestHelper.cs
+++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Tests/Designer/ModelTestHelper.cs
@@ -10,9 +10,11 @@ using System.Windows;
using System.Windows.Media;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
+using ICSharpCode.WpfDesign.Adorners;
using NUnit.Framework;
using ICSharpCode.WpfDesign.Designer;
using ICSharpCode.WpfDesign.Designer.Xaml;
+using Rhino.Mocks;
namespace ICSharpCode.WpfDesign.Tests.Designer
{
@@ -35,6 +37,11 @@ namespace ICSharpCode.WpfDesign.Tests.Designer
context.Services.Component.ComponentUnregistered += delegate(object sender, DesignItemEventArgs e) {
log.AppendLine("Unregister " + ItemIdentity(e.Item));
};*/
+
+ // create required service mocks
+ var designPanel = MockRepository.GenerateStub();
+ designPanel.Stub(dp => dp.Adorners).Return(new System.Collections.Generic.List());
+ context.Services.AddService(typeof(IDesignPanel), designPanel);
return context;
}
diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Tests/WpfDesign.Tests.csproj b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Tests/WpfDesign.Tests.csproj
index 88d1aeb71d..e27fa13edb 100644
--- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Tests/WpfDesign.Tests.csproj
+++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Tests/WpfDesign.Tests.csproj
@@ -43,6 +43,9 @@
+
+ ..\..\..\..\..\Libraries\RhinoMocks\Rhino.Mocks.dll
+
4.0
diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.XamlDom/Project/XamlDocument.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.XamlDom/Project/XamlDocument.cs
index 8ab32988a0..452ebd719d 100644
--- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.XamlDom/Project/XamlDocument.cs
+++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.XamlDom/Project/XamlDocument.cs
@@ -24,7 +24,7 @@ namespace ICSharpCode.WpfDesign.XamlDom
XamlTypeFinder _typeFinder;
- int namespacePrefixCounter;
+ int namespacePrefixCounter;
internal XmlDocument XmlDocument {
get { return _xmlDoc; }
@@ -173,14 +173,16 @@ namespace ICSharpCode.WpfDesign.XamlDom
return new XamlTextValue(this, c.ConvertToInvariantString(ctx, instance));
}
- string ns = GetNamespaceFor(elementType);
- string prefix = GetPrefixForNamespace(ns);
-
- XmlElement xml = _xmlDoc.CreateElement(prefix, elementType.Name, ns);
+ string ns = GetNamespaceFor(elementType);
+ string prefix = GetPrefixForNamespace(ns);
+
+ XmlElement xml = _xmlDoc.CreateElement(prefix, elementType.Name, ns);
if (hasStringConverter && XamlObject.GetContentPropertyName(elementType) != null) {
xml.InnerText = c.ConvertToInvariantString(instance);
- } else if (instance is Brush) { //Todo: this is a hacky fix, because Brush Editor don't edit Design Items and so we have no XML, only the Brush Object and we need to Parse the Brush to XAML!
+ } else if (instance is Brush) { // TODO: this is a hacky fix, because Brush Editor doesn't
+ // edit Design Items and so we have no XML, only the Brush
+ // object and we need to parse the Brush to XAML!
var s = new MemoryStream();
XamlWriter.Save(instance, s);
s.Seek(0, SeekOrigin.Begin);
@@ -212,48 +214,48 @@ namespace ICSharpCode.WpfDesign.XamlDom
return _typeFinder.GetXmlNamespaceFor(type.Assembly, type.Namespace);
}
- internal string GetPrefixForNamespace(string @namespace)
- {
- if (@namespace == XamlConstants.PresentationNamespace)
- {
- return null;
- }
+ internal string GetPrefixForNamespace(string @namespace)
+ {
+ if (@namespace == XamlConstants.PresentationNamespace)
+ {
+ return null;
+ }
- string prefix = _xmlDoc.DocumentElement.GetPrefixOfNamespace(@namespace);
+ string prefix = _xmlDoc.DocumentElement.GetPrefixOfNamespace(@namespace);
- if (String.IsNullOrEmpty(prefix))
- {
- prefix = _typeFinder.GetPrefixForXmlNamespace(@namespace);
+ if (String.IsNullOrEmpty(prefix))
+ {
+ prefix = _typeFinder.GetPrefixForXmlNamespace(@namespace);
- string existingNamespaceForPrefix = null;
- if (!String.IsNullOrEmpty(prefix))
- {
- existingNamespaceForPrefix = _xmlDoc.DocumentElement.GetNamespaceOfPrefix(prefix);
- }
+ string existingNamespaceForPrefix = null;
+ if (!String.IsNullOrEmpty(prefix))
+ {
+ existingNamespaceForPrefix = _xmlDoc.DocumentElement.GetNamespaceOfPrefix(prefix);
+ }
- if (String.IsNullOrEmpty(prefix) ||
- !String.IsNullOrEmpty(existingNamespaceForPrefix) &&
- existingNamespaceForPrefix != @namespace)
- {
- do
- {
- prefix = "Controls" + namespacePrefixCounter++;
- } while (!String.IsNullOrEmpty(_xmlDoc.DocumentElement.GetNamespaceOfPrefix(prefix)));
- }
+ if (String.IsNullOrEmpty(prefix) ||
+ !String.IsNullOrEmpty(existingNamespaceForPrefix) &&
+ existingNamespaceForPrefix != @namespace)
+ {
+ do
+ {
+ prefix = "Controls" + namespacePrefixCounter++;
+ } while (!String.IsNullOrEmpty(_xmlDoc.DocumentElement.GetNamespaceOfPrefix(prefix)));
+ }
- string xmlnsPrefix = _xmlDoc.DocumentElement.GetPrefixOfNamespace(XamlConstants.XmlnsNamespace);
- System.Diagnostics.Debug.Assert(!String.IsNullOrEmpty(xmlnsPrefix));
+ string xmlnsPrefix = _xmlDoc.DocumentElement.GetPrefixOfNamespace(XamlConstants.XmlnsNamespace);
+ System.Diagnostics.Debug.Assert(!String.IsNullOrEmpty(xmlnsPrefix));
- _xmlDoc.DocumentElement.SetAttribute(xmlnsPrefix + ":" + prefix, @namespace);
-
- if (@namespace == XamlConstants.DesignTimeNamespace)
- {
- var ignorableProp = new XamlProperty(this._rootElement,new XamlDependencyPropertyInfo(MarkupCompatibilityProperties.IgnorableProperty,true));
- ignorableProp.SetAttribute(prefix);
- }
- }
+ _xmlDoc.DocumentElement.SetAttribute(xmlnsPrefix + ":" + prefix, @namespace);
+
+ if (@namespace == XamlConstants.DesignTimeNamespace)
+ {
+ var ignorableProp = new XamlProperty(this._rootElement,new XamlDependencyPropertyInfo(MarkupCompatibilityProperties.IgnorableProperty,true));
+ ignorableProp.SetAttribute(prefix);
+ }
+ }
- return prefix;
- }
+ return prefix;
+ }
}
}