【问题标题】:Change icon of codeActivities更改 codeActivity 的图标
【发布时间】:2012-07-31 01:05:19
【问题描述】:

我有一些代码活动。

public class baseAct: CodeActivity
{
}
public sealed class C1: baseAct
{
}
public sealed class C2: baseAct
{
}

public sealed class C3: baseAct
{
}

我使用自定义 wf 设计器。 我想在不定义活动设计器的情况下为活动 C1、C2、C3 设置相同的图标。

有什么东西(AttributeTableBuilder 或类似的)来设置图标?

【问题讨论】:

    标签: workflow-foundation-4


    【解决方案1】:
    1. 将图标添加到您的解决方案中,将其构建操作设置为 Resoruce
    2. 在您的 Activity 中,将 ActivityDesigner.Icon 设置为此图像

    这方面最困难的部分是正确处理 Uri。如果您有问题,只需将图像转储到与设计器相同的文件夹中即可。

    <sap:ActivityDesigner.Icon>
        <DrawingBrush>
            <DrawingBrush.Drawing>
                <ImageDrawing>
                    <ImageDrawing.Rect>
                        <Rect
                            Location="0,0"
                            Size="16,16"></Rect>
                    </ImageDrawing.Rect>
                    <ImageDrawing.ImageSource>
                        <BitmapImage
                            UriSource="RelativeUriToTheImage.bmp" />
                    </ImageDrawing.ImageSource>
                </ImageDrawing>
            </DrawingBrush.Drawing>
        </DrawingBrush>
    </sap:ActivityDesigner.Icon>
    

    【讨论】:

    • 对我来说很好用。伙计们,您不要忘记添加资源的第 1 点(我做到了)
    • 当我将相对图像 uri 提供为 pack://application:,,,/&lt;Activities.Design.Project&gt;;component/&lt;folder/image.png&gt; 时,它对我有用
    【解决方案2】:

    我有一个示例,可以准确说明您需要做什么。 How to create a Custom Activity Designer with Windows Workflow Foundation (WF4)

    【讨论】:

    • 一切正常!但是当我尝试从项目文件夹中获取图像时遇到问题。使用您的示例 builder.AddCustomAttributes( typeof(MyActivity), new DesignerAttribute(typeof(MyActivityDesigner)), new DescriptionAttribute("My sample activity"), new ToolboxBitmapAttribute(typeof(MyActivity), "Images/QuestionMark.png"));
    • 您能否请edit 并在此处添加足够的详细信息,以便您不必去 MSDN 即可获得答案?我们不鼓励仅链接的答案,要么将其删除,要么将其转换为 cmets。而且,当我听到你的声音时——你是否知道为什么 WorkflowItemPresenter 需要初始化/显示 WorkflowDesigner 的视图?我通过仅显示根活动设计器来满足一些要求,这为我提供了无边框的设计体验,但 WIP 在这种情况下无法正常运行。另外,chat.stackoverflow.com/rooms/14693/workflowitempresenter-woes
    • OnLoad 我注册图标: public static void RegisterCodeActivyIcon( Bitmap bm,Type activityDesignerType) { AttributeTableBuilder builder = new AttributeTableBuilder(); builder.AddCustomAttributes(typeof(CodeActivity(, new DesignerAttribute(activityDesignerType)); AddAtrtibuteTable(builder); } private static void AddAtrtibuteTable(AttributeTableBuilder builder) { MetadataStore.AddAttributeTable(builder.CreateTable()); }
    • @igor 您可以将图像放在项目文件夹中并将 BuildAction 设置为嵌入式资源,但这会导致命名空间更改为 YourNamespace.Images。工具箱会从默认活动命名空间中查找 bmp,因此您需要手动更改嵌入资源的命名空间,这可以通过编辑项目文件并添加逻辑名称 $(RootNamespace).ToolboxIcon.png 来实现。 More Info on changing embedded namespace
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-20
    • 1970-01-01
    • 1970-01-01
    • 2019-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多