diff --git a/DeedyDesigner/Deedy.Activity/Helpers/ActivityHelper.cs b/DeedyDesigner/Deedy.Activity/Helpers/ActivityHelper.cs
index fe0b9dd..3bd3521 100644
--- a/DeedyDesigner/Deedy.Activity/Helpers/ActivityHelper.cs
+++ b/DeedyDesigner/Deedy.Activity/Helpers/ActivityHelper.cs
@@ -8,7 +8,7 @@ namespace Deedy.Activity
 {
     public static partial class Helper
     {
-        //TODO:管理附加属性与准备方法
+        //TODO:管理附加属性与「准备」方法
         public static string Help_GetAttachValue(this IActivity activity, string key)
         {
             if (activity == null || activity.ExpandoMapping == null) return string.Empty;
diff --git a/DeedyDesigner/Deedy.Activity/Resources/ThemeKeys.cs b/DeedyDesigner/Deedy.Activity/Resources/ThemeKeys.cs
index 77129f2..22762ac 100644
--- a/DeedyDesigner/Deedy.Activity/Resources/ThemeKeys.cs
+++ b/DeedyDesigner/Deedy.Activity/Resources/ThemeKeys.cs
@@ -18,6 +18,11 @@ namespace Deedy.Activity
             public const string InfoIcon_Info = "InfoIcon_Info";
             public const string InfoIcon_Warning = "InfoIcon_Warning";
             public const string InfoIcon_Error = "InfoIcon_Error";
+
+            public const string ToolIcon_Delete = "ToolIcon_Delete";
+            public const string ToolIcon_Close = "ToolIcon_Close";
+            public const string ToolIcon_Edit = "ToolIcon_Edit";
+            public const string ToolIcon_Save = "ToolIcon_Save";
         }
 
         public static ComponentResourceKey? LookupResourceKey(string themeKey)
@@ -28,9 +33,15 @@ namespace Deedy.Activity
         }
 
         public static ComponentResourceKey Activity_DefaultIcon => new ComponentResourceKey(typeof(ThemeKeys), Keys.Activity_DefaultIcon);
+
         public static ComponentResourceKey InfoIcon_None = new ComponentResourceKey(typeof(ThemeKeys), Keys.InfoIcon_None);
         public static ComponentResourceKey InfoIcon_Info = new ComponentResourceKey(typeof(ThemeKeys), Keys.InfoIcon_Info);
         public static ComponentResourceKey InfoIcon_Warning = new ComponentResourceKey(typeof(ThemeKeys), Keys.InfoIcon_Warning);
         public static ComponentResourceKey InfoIcon_Error = new ComponentResourceKey(typeof(ThemeKeys), Keys.InfoIcon_Error);
+
+        public static ComponentResourceKey ToolIcon_Delete = new ComponentResourceKey(typeof(ThemeKeys), Keys.ToolIcon_Delete);
+        public static ComponentResourceKey ToolIcon_Close = new ComponentResourceKey(typeof(ThemeKeys), Keys.ToolIcon_Close);
+        public static ComponentResourceKey ToolIcon_Edit = new ComponentResourceKey(typeof(ThemeKeys), Keys.ToolIcon_Edit);
+        public static ComponentResourceKey ToolIcon_Save = new ComponentResourceKey(typeof(ThemeKeys), Keys.ToolIcon_Save);
     }
 }
diff --git a/DeedyDesigner/Deedy.Activity/Resources/ThemeResources.cs b/DeedyDesigner/Deedy.Activity/Resources/ThemeResources.cs
index bd05bc5..d596fe6 100644
--- a/DeedyDesigner/Deedy.Activity/Resources/ThemeResources.cs
+++ b/DeedyDesigner/Deedy.Activity/Resources/ThemeResources.cs
@@ -11,9 +11,15 @@ namespace Deedy.Activity
     public partial class ThemeResources : ResourceDictionary
     {
         public ImageSource? Activity_DefaultIcon => this[ThemeKeys.Activity_DefaultIcon] as ImageSource;
+
         public ImageSource? InfoIcon_None => this[ThemeKeys.InfoIcon_None] as ImageSource;
         public ImageSource? InfoIcon_Info => this[ThemeKeys.InfoIcon_Info] as ImageSource;
         public ImageSource? InfoIcon_Warning => this[ThemeKeys.InfoIcon_Warning] as ImageSource;
         public ImageSource? InfoIcon_Error => this[ThemeKeys.InfoIcon_Error] as ImageSource;
+
+        public ImageSource? ToolIcon_Delete => this[ThemeKeys.ToolIcon_Delete] as ImageSource;
+        public ImageSource? ToolIcon_Close => this[ThemeKeys.ToolIcon_Close] as ImageSource;
+        public ImageSource? ToolIcon_Edit => this[ThemeKeys.ToolIcon_Edit] as ImageSource;
+        public ImageSource? ToolIcon_Save => this[ThemeKeys.ToolIcon_Save] as ImageSource;
     }
 }
diff --git a/DeedyDesigner/Deedy.Activity/Selector/ActionTemplateSelector.cs b/DeedyDesigner/Deedy.Activity/Selector/ActionTemplateSelector.cs
index 17d98a0..9ea790d 100644
--- a/DeedyDesigner/Deedy.Activity/Selector/ActionTemplateSelector.cs
+++ b/DeedyDesigner/Deedy.Activity/Selector/ActionTemplateSelector.cs
@@ -26,14 +26,38 @@ namespace Deedy.Activity
         private void LoadFromSource()
         {
             if (IsLoaded || Source == null) return;
-            //TODO:从Source中加载DataTemplate;要求DataType必须继承IActionElement接口(ActionTemplates中设置的模版高于Source中的模版)
+            //HACK:从Source中加载DataTemplate;要求DataType必须继承IActionElement接口(ActionTemplates中设置的模版高于Source中的模版)
+
+            //var uri = new Uri("pack://application:,,,/YourAssembly;component/Resources/Styles.xaml");
+            //var resourceDict = (ResourceDictionary)Application.LoadComponent(uri);
+            //this.Resources.MergedDictionaries.Add(resourceDict);
+
+            if (Application.LoadComponent(this.Source) is ResourceDictionary resources)
+            {
+                foreach (var resource in resources)
+                {
+                    if (resource is DataTemplate dataTemplate)
+                    {
+                        if (dataTemplate.DataType is Type type)
+                        {
+                            if (type.IsAssignableTo(typeof(IActionElement)))
+                                this.ActionTemplates.Add(dataTemplate);
+                        }
+                    }
+                }
+            }
+
             IsLoaded = true;
         }
         public ActionTemplateSelector() { }
         public override DataTemplate SelectTemplate(object item, DependencyObject container)
         {
             this.LoadFromSource();
-            //TODO:根据类型与契约选择特定的数据模版
+            foreach (var dataTemplate in this.ActionTemplates)
+            {
+                if (item.GetType().Equals(dataTemplate.DataType))
+                    return dataTemplate;
+            }
             return base.SelectTemplate(item, container);
         }
     }
diff --git a/DeedyDesigner/Deedy.Activity/Themes/ThemeResources.xaml b/DeedyDesigner/Deedy.Activity/Themes/ThemeResources.xaml
index 01115c1..da6ef71 100644
--- a/DeedyDesigner/Deedy.Activity/Themes/ThemeResources.xaml
+++ b/DeedyDesigner/Deedy.Activity/Themes/ThemeResources.xaml
@@ -5,6 +5,7 @@
     
         
     
+    
     
         
     
@@ -17,6 +18,18 @@
     
         
     
-
+    
+    
+        
+    
+    
+        
+    
+    
+        
+    
+    
+        
+    
     
 
\ No newline at end of file