diff --git a/RazorEngineTest/PositionAdorner.cs b/RazorEngineTest/DropPlacementAdorner.cs
similarity index 90%
rename from RazorEngineTest/PositionAdorner.cs
rename to RazorEngineTest/DropPlacementAdorner.cs
index c025cdd..505672a 100644
--- a/RazorEngineTest/PositionAdorner.cs
+++ b/RazorEngineTest/DropPlacementAdorner.cs
@@ -10,19 +10,19 @@ namespace RazorEngineTest
using System.Windows.Documents;
using System.Windows.Media;
- public class PositionAdorner : Adorner
+ public class DropPlacementAdorner : Adorner
{
private readonly string _position;
private static readonly Pen _pen;
- static PositionAdorner()
+ static DropPlacementAdorner()
{
// 定义装饰器的画笔
_pen = new Pen(Brushes.Red, 5.0);
_pen.Freeze();
}
- public PositionAdorner(UIElement adornedElement, string position)
+ public DropPlacementAdorner(UIElement adornedElement, string position)
: base(adornedElement)
{
_position = position;
@@ -36,13 +36,11 @@ namespace RazorEngineTest
// 根据位置信息绘制不同的视觉效果
switch (_position)
{
- case "前":
case "上":
drawingContext.DrawLine(_pen,
new Point(0, 0),
new Point(adornedElementRect.Right, 0));
break;
- case "后":
case "下":
drawingContext.DrawLine(_pen,
new Point(0, adornedElementRect.Bottom),
diff --git a/RazorEngineTest/MyControl.cs b/RazorEngineTest/MyControl.cs
index 43bcd1c..31797f6 100644
--- a/RazorEngineTest/MyControl.cs
+++ b/RazorEngineTest/MyControl.cs
@@ -46,7 +46,7 @@ namespace RazorEngineTest
///
public class MyControl : Control
{
- private PositionAdorner? _currentAdorner = null;
+ private DropPlacementAdorner? _currentAdorner = null;
private AdornerLayer? _adornerLayer = null;
static MyControl()
{
@@ -61,7 +61,7 @@ namespace RazorEngineTest
if (_adornerLayer != null)
{
- _currentAdorner = new PositionAdorner(this, position);
+ _currentAdorner = new DropPlacementAdorner(this, position);
_adornerLayer.Add(_currentAdorner);
}
}
diff --git a/RazorEngineTest/StateAdornerDecorator.cs b/RazorEngineTest/StateAdornerDecorator.cs
new file mode 100644
index 0000000..886780d
--- /dev/null
+++ b/RazorEngineTest/StateAdornerDecorator.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace RazorEngineTest
+{
+ ///
+ /// 按照步骤 1a 或 1b 操作,然后执行步骤 2 以在 XAML 文件中使用此自定义控件。
+ ///
+ /// 步骤 1a) 在当前项目中存在的 XAML 文件中使用该自定义控件。
+ /// 将此 XmlNamespace 特性添加到要使用该特性的标记文件的根
+ /// 元素中:
+ ///
+ /// xmlns:MyNamespace="clr-namespace:RazorEngineTest"
+ ///
+ ///
+ /// 步骤 1b) 在其他项目中存在的 XAML 文件中使用该自定义控件。
+ /// 将此 XmlNamespace 特性添加到要使用该特性的标记文件的根
+ /// 元素中:
+ ///
+ /// xmlns:MyNamespace="clr-namespace:RazorEngineTest;assembly=RazorEngineTest"
+ ///
+ /// 您还需要添加一个从 XAML 文件所在的项目到此项目的项目引用,
+ /// 并重新生成以避免编译错误:
+ ///
+ /// 在解决方案资源管理器中右击目标项目,然后依次单击
+ /// “添加引用”->“项目”->[浏览查找并选择此项目]
+ ///
+ ///
+ /// 步骤 2)
+ /// 继续操作并在 XAML 文件中使用控件。
+ ///
+ ///
+ ///
+ ///
+ [TemplateVisualState(GroupName = "SmartUnit", Name = "Normal")]
+ [TemplateVisualState(GroupName = "SmartUnit", Name = "Selected")]
+ [TemplateVisualState(GroupName = "SmartUnit", Name = "NormalHover")]
+ [TemplateVisualState(GroupName = "SmartUnit", Name = "SelectedHover")]
+ [TemplateVisualState(GroupName = "SmartUnit", Name = "NormalDragHover")]
+ [TemplateVisualState(GroupName = "SmartUnit", Name = "SelectedDragHover")]
+ [ContentProperty("Content")]
+ public class StateAdornerDecorator : ContentControl
+ {
+ static StateAdornerDecorator()
+ {
+ DefaultStyleKeyProperty.OverrideMetadata(typeof(StateAdornerDecorator), new FrameworkPropertyMetadata(typeof(StateAdornerDecorator)));
+ }
+ public StateAdornerDecorator()
+ {
+ VisualStateManager.GoToState(this, "Normal", true);
+ }
+ }
+}
diff --git a/RazorEngineTest/Themes/Generic.xaml b/RazorEngineTest/Themes/Generic.xaml
index 3ca715f..a73f963 100644
--- a/RazorEngineTest/Themes/Generic.xaml
+++ b/RazorEngineTest/Themes/Generic.xaml
@@ -14,10 +14,80 @@
-
+
+
+
+
+
+
+
+