Создание вложенного настраиваемого действия WPF и выполнение вложенного действия

Я пытаюсь создать область, содержащую набор действий с использованием C # и WPF для использования в UiPath.

Я могу создать настраиваемое действие, используя приведенный ниже класс

using System.Activities;

namespace Custom_Activities
{
    public sealed class Scoped_Activity : Scoped_Activity_Template
    {
        protected override void Execute(CodeActivityContext context)
        {
            System.Console.WriteLine("Custom Activity Executing");
        }
    }
}

и я могу создать область, содержащую это действие, используя приведенный ниже класс

using System.Activities;

namespace Custom_Activities
{
    public class Custom_Activity_Scope : CodeActivity
    {
        protected override void Execute(CodeActivityContext context)
        {
            System.Console.WriteLine("Scope Executing");
        }
    }
}

и нижеприведенный файл дизайнера

<sap:ActivityDesigner 
    x:Class="Custom_Activities.Custom_Activity_Scope_Designer"
                    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:sapc="clr-namespace:System.Activities.Presentation.Converters;assembly=System.Activities.Presentation"
                    xmlns:sapv="clr-namespace:System.Activities.Presentation.View;assembly=System.Activities.Presentation"
                    xmlns:sap="clr-namespace:System.Activities.Presentation;assembly=System.Activities.Presentation"
                    xmlns:s="clr-namespace:System;assembly=mscorlib">
    <sap:ActivityDesigner.Resources>
        <ResourceDictionary x:Uid="ResourceDictionary_1">
            <sapc:ArgumentToExpressionConverter x:Key="ArgumentToExpressionConverter" />
            <sapc:ModelToObjectValueConverter x:Key="ModelToObjectValueConverter" />




            <DataTemplate x:Key="Collapsed">

            </DataTemplate>

            <DataTemplate x:Key="Expanded">
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition />
                    </Grid.ColumnDefinitions>

                    <Grid.RowDefinitions>
                        <RowDefinition />
                    </Grid.RowDefinitions>


                    <sap:WorkflowItemPresenter Grid.Row="0" Grid.Column="0" Margin="5" />
                </Grid>
            </DataTemplate>

            <Style x:Key="ExpandOrCollapsedStyle" TargetType="{x:Type ContentPresenter}">
                <Setter Property="ContentTemplate" Value="{DynamicResource Expanded}" />
                <Style.Triggers>
                    <DataTrigger Binding="{Binding Path=ShowExpanded}" Value="false">
                        <Setter Property="ContentTemplate" Value="{DynamicResource Collapsed}" />
                    </DataTrigger>
                </Style.Triggers>
            </Style>

        </ResourceDictionary>
    </sap:ActivityDesigner.Resources>
    <Grid>
        <ContentPresenter Style="{DynamicResource ExpandOrCollapsedStyle}" Content="{Binding}" />
    </Grid>
</sap:ActivityDesigner>

Когда я запускаю Scoped_Activity, я получаю желаемый результат (сообщение журнала с надписью «Custom Activity Executing»).

Когда я запускаю Custom_Activity_Scope, я получаю желаемый результат (сообщение журнала «Scope Executing»)

Однако когда я помещаю Scoped_Activity в Custom_Activity_Scope, я получаю только сообщение «Scope Executing», поэтому Scoped_Activity, похоже, не выполняется.

Я не совсем уверен, какими должны быть мои следующие шаги, чтобы выполнить Scoped_Activity в Custom_Activity_Scope

Снимок экрана вложенного действия


person Conor    schedule 28.08.2019    source источник
comment
Что вы имеете в виду, когда говорите, что я помещаю Scoped_Activity в Custom_Activity_Scope? Наследовать? Как: открытый класс Custom_Activity_Scope: Scoped_Activity   -  person user10728126    schedule 28.08.2019
comment
@ user10728126, я добавил скриншот к вопросу, надеюсь, что это имеет смысл / поможет   -  person Conor    schedule 28.08.2019
comment
Оба метода Execute в Activity выполняют лишь некоторую трассировку, нет кода, который ищет вложенное действие и затем вызывает из него Execute. В Custom_Activity_Scope должен быть код, который ищет вложенные действия и явно выполняет их, как это делает Sequence Activity.   -  person recineshto    schedule 28.08.2019
comment
@recineshto, что имеет смысл. Может ли область по-прежнему наследовать / реализовывать от CodeActivity, просматривая некоторые сайты, упоминающие вместо этого NativeActivity? Не думайте, что у вас есть ссылки на примеры и т. Д.   -  person Conor    schedule 28.08.2019
comment
@Conor, здесь, на SO, я нашел следующий образец stackoverflow.com/questions/36068737/ Как вы можете видеть в приведенном примере, сантехника будет большей частью вашего кода :)   -  person recineshto    schedule 28.08.2019
comment
Однако спасибо, этот пример предполагает, что дочернее действие всегда имеет тип «Утвердить». Я ищу пример, который будет принимать любой тип действия и выполнять его из области действия.   -  person Conor    schedule 28.08.2019
comment
@Conor, еще один образец из SO stackoverflow.com/questions/ 7521696 / На этот раз сделана попытка имитировать последовательность :) и есть контроль выполнения   -  person recineshto    schedule 29.08.2019


Ответы (1)