From 085945326be663fb2e0607fe4d5eb4a063198a01 Mon Sep 17 00:00:00 2001 From: jkuehner Date: Sun, 25 Aug 2013 21:47:00 +0200 Subject: [PATCH] Fix a Null Ref Exception in Thumbnail View (happend for Example on wrong XAML Code) --- .../Project/ThumbnailView/ThumbnailView.cs | 66 +++++++++++-------- 1 file changed, 37 insertions(+), 29 deletions(-) diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/ThumbnailView/ThumbnailView.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/ThumbnailView/ThumbnailView.cs index 404d14de94..bbd9340b4e 100644 --- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/ThumbnailView/ThumbnailView.cs +++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/ThumbnailView/ThumbnailView.cs @@ -114,38 +114,46 @@ namespace ICSharpCode.WpfDesign.Designer.ThumbnailView private void InvalidateScale(out double scale, out double xOffset, out double yOffset) { - var designedElement = this.DesignSurface.DesignContext.RootItem.Component as FrameworkElement; + scale = 1; + xOffset = 0; + yOffset = 0; - var fac1 = designedElement.ActualWidth / zoomCanvas.ActualWidth; - var fac2 = designedElement.ActualHeight / zoomCanvas.ActualHeight; - - // zoom canvas size - double x = this.zoomCanvas.ActualWidth; - double y = this.zoomCanvas.ActualHeight; - - if (fac1 < fac2) + if (this.DesignSurface.DesignContext != null) { - x = designedElement.ActualWidth / fac2; - xOffset = (zoomCanvas.ActualWidth - x) / 2; - yOffset = 0; - } - else - { - y = designedElement.ActualHeight / fac1; - xOffset = 0; - yOffset = (zoomCanvas.ActualHeight - y) / 2; - } - - double w = designedElement.ActualWidth; - double h = designedElement.ActualHeight; - - double scaleX = x / w; - double scaleY = y / h; + var designedElement = this.DesignSurface.DesignContext.RootItem.Component as FrameworkElement; + + + var fac1 = designedElement.ActualWidth / zoomCanvas.ActualWidth; + var fac2 = designedElement.ActualHeight / zoomCanvas.ActualHeight; + + // zoom canvas size + double x = this.zoomCanvas.ActualWidth; + double y = this.zoomCanvas.ActualHeight; + + if (fac1 < fac2) + { + x = designedElement.ActualWidth / fac2; + xOffset = (zoomCanvas.ActualWidth - x) / 2; + yOffset = 0; + } + else + { + y = designedElement.ActualHeight / fac1; + xOffset = 0; + yOffset = (zoomCanvas.ActualHeight - y) / 2; + } + + double w = designedElement.ActualWidth; + double h = designedElement.ActualHeight; + + double scaleX = x / w; + double scaleY = y / h; - scale = (scaleX < scaleY) ? scaleX : scaleY; - - xOffset += (x - scale * w) / 2; - yOffset += (y - scale * h) / 2; + scale = (scaleX < scaleY) ? scaleX : scaleY; + + xOffset += (x - scale * w) / 2; + yOffset += (y - scale * h) / 2; + } } public event PropertyChangedEventHandler PropertyChanged;