订阅

UiPath 活动

UiPath 活动指南

将主题应用于自定义活动

UiPath Studio 目前提供了两种主题:“经典”和“深色”。为确保一致的外观和风格,自定义活动也应与 Studio 遵循相同的样式指导原则。以下指导原则说明了将“深色”主题应用于自定义活动时要使用的样式。

使用“基准”属性

UiPath Studio 主题包括所有原生 WPF 控件的样式和模板。要将主题应用于原生 WPF 控件,所有样式均应使用“BasedOn”作为默认样式属性。在使用该属性时,对于新样式中未明确重新定义的样式,新样式会沿用原始样式的值。

If a style without the BasedOn property is used, the control's original style is overridden, leading to the theme being applied inconsistently.

将主题应用于下拉列表

下例显示了如何使用“BasedOn”属性,以将“深色”主题应用于活动的下拉列表。

<Style TargetType="{x:Type ComboBox}" BasedOn="{StaticResource {x:Type ComboBox}}" >

       <Setter Property="HorizontalAlignment" Value="Left"/>
</Style>

After the BasedOn property is applied, the resulting activity has the Dark theme applied, and drop-down is also displayed correctly:

如未使用“BasedOn”属性,则无法将该主题应用于此活动的下拉列表:

<Style TargetType="{x:Type ComboBox}">

       <Setter Property="HorizontalAlignment" Value="Left"/>
</Style>

将主题应用于按钮

<Button Content="Configure..."  Width="100" HorizontalAlignment="Left"/>

Alternatively:

  <Button Content="Configure..."  Width="100">

         <Button.Style>

               <Style TargetType="Button" BasedOn="{StaticResource {x:Type Button}}">

                       <Setter Property="HorizontalAlignment" Value="Left"/>

               </Style>

           </Button.Style>

   </Button>

在使用“BasedOn”属性后,自定义活动中的按钮已正常应用主题:

如未使用“BasedOn”属性,则该活动的按钮将如下所示:

如果仅使用默认样式,则自定义活动的主题与所有 Studio 主题保持一致,且对于日后新推出的主题也是如此。

建议采用基准样式,避免直接设置颜色和字号。大多数控件的颜色和字号均由当前的 Studio 主题进行设置。不覆盖这些设置可确保为控件统一应用相同的样式(颜色、字号),并且无论使用何种主题,均可为所有元素提供一致的设计。此举还可确保在使用日后新推出的主题时,颜色和字号均能保持一致性。

如果必须自定义控件,请确保颜色可与各主题兼容,且已正确使用对比度。配色方案必须考虑如下情况:如果文本与背景或深色图标的颜色相同,使用“深色”主题会导致文本不可见。

此外,各种主题还应使用不同资源。此举可确保所有图标和屏幕元素易于读取,并且与所有其他元素以及应用程序的整个主题保持一致。这适用于图像和样式组件(主要是颜色组件)。

Use a Try Catch to obtain the current application theme:

try

{

var theme = WorkflowDesignerContractRegistry.Instance.Info?.CurrentTheme;

}

catch (Exception e)

{

Console.WriteLine(e);

}

建议使用“Try Catch 异常处理”,因为 UiPath Studio 2018.4 版和更高版本中均已添加“WorkflowDesignerInfo”接口。在早期版本中,执行此操作会抛出异常。

CurrentTheme”属性包含以下值:

  • “浅色”- 表示“经典”主题
  • “深色”- 表示“深色”主题

定义主题资源

In order to use different resources for different themes, you can define resources for each theme in a ResourceDictionary, by using the same name(x:Key) value. Depending on the current application theme, load the corresponding theme resources, and then resources can be used with DynamicResource.

用于“经典”主题的资源:

ClassicThemeResources.xaml

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Source="/<YourDllName>;component/Resources/ClassicThemeResources.xaml">



        <SolidColorBrush x:Key="CustomButtonBackground" Color="White"/>



        <Canvas x:Key="QuestionIcon" Width="76" Height="76" Clip="F1 M 0,0L 76,0L 76,76L 0,76L 0,0">

                <Path Width="25.3333" Height="39.5833" Canvas.Left="25.3333" Canvas.Top="17.4167" Stretch="Fill" Fill="#FF6D6E70" Data="F1 M 37.2083,....... 38,17.4167 Z "/>

        </Canvas>

</ResourceDictionary>

用于“深色”主题的资源:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Source="/<YourDllName>;component/Resources/DarkResources.xaml">



       <SolidColorBrush x:Key="CustomButtonBackground" Color="Black"/>



       <Canvas x:Key="QuestionIcon" Width="76" Height="76" Clip="F1 M 0,0L 76,0L 76,76L 0,76L 0,0">

               <Path Width="25.3333" Height="39.5833" Canvas.Left="25.3333" Canvas.Top="17.4167" Stretch="Fill" Fill="#FFFBFBFB" Data="F1 M 37.2083,....... 38,17.4167 Z "/>

       </Canvas>

</ResourceDictionary>

根据主题加载资源:

if (theme  == "Light")

           {

               Application.Current.Resources.MergedDictionaries.Add(new ResourceDictionary { Source = new Uri(@"/<YourDllName>;component/Resources/ClassicThemeResources.xaml", UriKind.Relative) });

           }

else if (theme  == "Dark")

           {

               Application.Current.Resources.MergedDictionaries.Add(new ResourceDictionary { Source = new Uri(@"/<YourDllName>;component/Resources/DarkResources.xaml", UriKind.Relative) });

           }

使用资源:

<Button Content="Configure..."  Width="100">

         <Button.Style>

               <Style TargetType="Button" BasedOn="{StaticResource {x:Type Button}}">

                       <Setter Property="HorizontalAlignment" Value="Left"/>

                       <Setter Property="Background" Value="{DynamicResource CustomButtonBackground} "/>

               </Style>

           </Button.Style>

   </Button>



 <Rectangle  Margin="2,0,0,0" Width="15" Height="15" Stretch="UniformToFill">

           <Rectangle.Fill>

                      <VisualBrush Visual="{DynamicResource QuestionIcon}" Stretch="Uniform" />

           </Rectangle.Fill>

</Rectangle>

默认应用 Studio 主题的控件

如果遵循前述指导原则,则 UiPath Studio 应用程序主题会默认应用于以下原生控件:

  • ButtonBase - Applies to BasedOn controls and its derivations, which includes Button,
    RepeatButton, and ToggleButton.
  • 复选框
  • 组合框
  • 组合框项
  • 上下文菜单
  • 文档查看器
  • 扩展器
  • 网格拆分器
  • 网格视图列标头
  • 分组框
  • 超链接
  • Label
  • 列表框
  • 列表框项
  • 列表视图
  • 列表视图项
  • 菜单
  • 菜单项
  • 密码框
  • 进度栏
  • 单选按钮
  • 大小调节手柄
  • 滚动条
  • 滚动查看器
  • 分隔符
  • Slider
  • 状态栏
  • 状态栏项
  • 选项卡控件
  • 选项卡项
  • 基本文本框 - 适用于“TextBoxBase”控件及其派生控件,包括“TextBox”和“RichTextBox”。
  • 缩略图
  • 工具栏
  • 工具栏托盘
  • 工具提示
  • 树视图
  • 树视图项
  • 窗口

大约一年前更新


将主题应用于自定义活动


建议的编辑仅限用于 API 参考页面

You can only suggest edits to Markdown body content, but not to the API spec.