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