diff --git a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Magnifier/Implementation/FrameType.cs b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Magnifier/Implementation/FrameType.cs
new file mode 100644
index 00000000..4cdeac5e
--- /dev/null
+++ b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Magnifier/Implementation/FrameType.cs
@@ -0,0 +1,10 @@
+using System;
+
+namespace Microsoft.Windows.Controls
+{
+ public enum FrameType
+ {
+ Circle,
+ Rectangle
+ }
+}
diff --git a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Magnifier/Implementation/Magnifier.cs b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Magnifier/Implementation/Magnifier.cs
index 2ea13e1b..7771b255 100644
--- a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Magnifier/Implementation/Magnifier.cs
+++ b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Magnifier/Implementation/Magnifier.cs
@@ -14,33 +14,69 @@ namespace Microsoft.Windows.Controls
{
get
{
- return new Size(2 * Radius, 2 * Radius);
+ switch (FrameType)
+ {
+ case FrameType.Circle:
+ return new Size(2 * Radius, 2 * Radius);
+ case FrameType.Rectangle:
+ return new Size(Width, Height);
+ default:
+ return Size.Empty;
+ }
}
}
#endregion //DefaultSize
- #region MagnifierWidth
+ #region FrameWidth
- public static readonly DependencyProperty MagnifierWidthProperty = DependencyProperty.Register("MagnifierWidth", typeof(double), typeof(Magnifier), new UIPropertyMetadata(50.0));
- internal double MagnifierWidth
+ public static readonly DependencyProperty FrameWidthProperty = DependencyProperty.Register("FrameWidth", typeof(double), typeof(Magnifier), new UIPropertyMetadata(50.0));
+ internal double FrameWidth
{
- get { return (double)GetValue(MagnifierWidthProperty); }
- set { SetValue(MagnifierWidthProperty, value); }
+ get { return (double)GetValue(FrameWidthProperty); }
+ set { SetValue(FrameWidthProperty, value); }
}
#endregion //MagnifierWidth
- #region MagnifierHeight
+ #region FrameHeight
- public static readonly DependencyProperty MagnifierHeightProperty = DependencyProperty.Register("MagnifierHeight", typeof(double), typeof(Magnifier), new UIPropertyMetadata(50.0));
- internal double MagnifierHeight
+ public static readonly DependencyProperty FrameHeightProperty = DependencyProperty.Register("FrameHeight", typeof(double), typeof(Magnifier), new UIPropertyMetadata(50.0));
+ internal double FrameHeight
{
- get { return (double)GetValue(MagnifierHeightProperty); }
- set { SetValue(MagnifierHeightProperty, value); }
+ get { return (double)GetValue(FrameHeightProperty); }
+ set { SetValue(FrameHeightProperty, value); }
}
- #endregion //MagnifierWidth
+ #endregion //FrameHeight
+
+ #region FrameType
+
+ public static readonly DependencyProperty FrameTypeProperty = DependencyProperty.Register("FrameType", typeof(FrameType), typeof(Magnifier), new UIPropertyMetadata(FrameType.Circle, OnFrameTypeChanged));
+ public FrameType FrameType
+ {
+ get { return (FrameType)GetValue(FrameTypeProperty); }
+ set { SetValue(FrameTypeProperty, value); }
+ }
+
+ private static void OnFrameTypeChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
+ {
+ Magnifier m = (Magnifier)d;
+ m.OnFrameTypeChanged((FrameType)e.OldValue, (FrameType)e.NewValue);
+ }
+
+ protected virtual void OnFrameTypeChanged(FrameType oldValue, FrameType newValue)
+ {
+ if (newValue == Controls.FrameType.Circle)
+ {
+ Height = DefaultSize.Height;
+ Width = DefaultSize.Width;
+ }
+
+ ResolveViewBox();
+ }
+
+ #endregion //FrameType
#region Radius
@@ -136,6 +172,8 @@ namespace Microsoft.Windows.Controls
static Magnifier()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(Magnifier), new FrameworkPropertyMetadata(typeof(Magnifier)));
+ HeightProperty.OverrideMetadata(typeof(Magnifier), new FrameworkPropertyMetadata(100.0));
+ WidthProperty.OverrideMetadata(typeof(Magnifier), new FrameworkPropertyMetadata(100.0));
}
public Magnifier()
@@ -145,17 +183,37 @@ namespace Microsoft.Windows.Controls
#endregion
+ #region Base Class Overrides
+
+ public override void OnApplyTemplate()
+ {
+ base.OnApplyTemplate();
+
+ if (FrameType == Controls.FrameType.Circle)
+ {
+ Height = DefaultSize.Height;
+ Width = DefaultSize.Width;
+ }
+
+ ResolveViewBox();
+ }
+
+ #endregion // Base Class Overrides
+
#region Methods
private void ResolveViewBox()
{
+ if (!IsInitialized)
+ return;
+
double correction = (BorderThickness.Bottom + BorderThickness.Left + BorderThickness.Right + BorderThickness.Top == 0) ? 1 : 0;
double width = DefaultSize.Width * ZoomFactor;
double height = DefaultSize.Height * ZoomFactor;
- MagnifierWidth = DefaultSize.Width - correction;
- MagnifierHeight = DefaultSize.Height - correction;
+ FrameWidth = DefaultSize.Width - correction;
+ FrameHeight = DefaultSize.Height - correction;
ViewBox = new Rect(ViewBox.Location, new Size(width, height));
}
diff --git a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Magnifier/Themes/Generic.xaml b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Magnifier/Themes/Generic.xaml
index bcbf1567..4e74340d 100644
--- a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Magnifier/Themes/Generic.xaml
+++ b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Magnifier/Themes/Generic.xaml
@@ -10,30 +10,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/WPFToolkit.Extended.csproj b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/WPFToolkit.Extended.csproj
index d004657f..a9c2c3cc 100644
--- a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/WPFToolkit.Extended.csproj
+++ b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/WPFToolkit.Extended.csproj
@@ -208,6 +208,7 @@
+