Browse Source

Fix a Null Ref Exception in Thumbnail View

(happend for Example on wrong XAML Code)
pull/62/head
jkuehner 12 years ago
parent
commit
085945326b
  1. 58
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/ThumbnailView/ThumbnailView.cs

58
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) 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; if (this.DesignSurface.DesignContext != null)
var fac2 = designedElement.ActualHeight / zoomCanvas.ActualHeight; {
var designedElement = this.DesignSurface.DesignContext.RootItem.Component as FrameworkElement;
// zoom canvas size
double x = this.zoomCanvas.ActualWidth;
double y = this.zoomCanvas.ActualHeight;
if (fac1 < fac2) var fac1 = designedElement.ActualWidth / zoomCanvas.ActualWidth;
{ var fac2 = designedElement.ActualHeight / zoomCanvas.ActualHeight;
x = designedElement.ActualWidth / fac2;
xOffset = (zoomCanvas.ActualWidth - x) / 2; // zoom canvas size
yOffset = 0; double x = this.zoomCanvas.ActualWidth;
} double y = this.zoomCanvas.ActualHeight;
else
{
y = designedElement.ActualHeight / fac1;
xOffset = 0;
yOffset = (zoomCanvas.ActualHeight - y) / 2;
}
double w = designedElement.ActualWidth; if (fac1 < fac2)
double h = designedElement.ActualHeight; {
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 scaleX = x / w;
double scaleY = y / h; double scaleY = y / h;
scale = (scaleX < scaleY) ? scaleX : scaleY; scale = (scaleX < scaleY) ? scaleX : scaleY;
xOffset += (x - scale * w) / 2; xOffset += (x - scale * w) / 2;
yOffset += (y - scale * h) / 2; yOffset += (y - scale * h) / 2;
}
} }
public event PropertyChangedEventHandler PropertyChanged; public event PropertyChangedEventHandler PropertyChanged;

Loading…
Cancel
Save