如何覆盖Windows Workflow Foundation重宿主库的默认颜色
解决Windows Workflow Foundation重宿主库默认颜色覆盖问题
要成功覆盖WF重宿主设计器的默认颜色,需要注意资源类型匹配和加载优先级两个关键问题,以下是具体解决方案:
1. 修正自定义资源字典的类型匹配问题
默认的ColorResources.xaml中部分资源是特定类型(如LinearGradientBrush),如果用SolidColorBrush直接覆盖会因类型不匹配失效。修改你的CustomColors.xaml,确保自定义资源类型与默认资源一致:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <!-- 先合并WF默认资源字典 --> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="pack://application:,,,/System.Activities.Presentation;component/System/Activities/Presentation/ColorResources.xaml"/> </ResourceDictionary.MergedDictionaries> <!-- 覆盖默认资源,严格匹配类型 --> <SolidColorBrush x:Key="WorkflowViewElementCaption" Color="#FFE6E6E6" /> <!-- DesignerViewBackground默认是LinearGradientBrush,需用同类型覆盖 --> <LinearGradientBrush x:Key="DesignerViewBackground" StartPoint="0,0" EndPoint="0,1"> <GradientStop Color="#FF232325" Offset="0"/> <GradientStop Color="#FF232325" Offset="1"/> </LinearGradientBrush> <SolidColorBrush x:Key="ShellBarBackgroundBrush" Color="#FF232325" /> </ResourceDictionary>
2. 提升自定义资源的加载优先级
WF设计器的内部控件会在自身Resources中加载默认资源,应用级资源(App.xaml中定义的)优先级低于控件内部资源,无法覆盖。需将自定义资源添加到控件级资源中,比如WorkflowDesigner的View或其父容器的Resources:
方法一:通过C#代码添加
WorkflowDesigner wfDesigner = new WorkflowDesigner(); wfDesigner.Load(new ActivityBuilder()); // 加载自定义资源字典 var customColorsDict = new ResourceDictionary { Source = new Uri("CustomColors.xaml", UriKind.Relative) }; // 将自定义资源添加到DesignerView的资源集合中,优先级高于内部资源 wfDesigner.View.Resources.MergedDictionaries.Add(customColorsDict); designerview.Child = wfDesigner.View;
方法二:通过XAML给父容器添加资源
如果你的designerview是XAML中定义的容器控件,直接在其Resources中引用自定义字典:
<Grid x:Name="designerview"> <Grid.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="CustomColors.xaml"/> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </Grid.Resources> </Grid>
这样WPF在查找资源时,会优先使用控件级的自定义资源,从而覆盖WF设计器的默认颜色设置。
内容的提问来源于stack exchange,提问作者Naveen Kumar
相关产品推荐
相关产品推荐

