Содержимое WorkflowItemPresenter исчезает при сборке - PullRequest
0 голосов
/ 12 октября 2010

Привет всем,
В моем пользовательском действии, когда я помещаю действие в WorkflowItemPresenter, , сохраняю и компилирую , мое действие внезапно исчезает , и я не понимаю, почему. Возможно, я где-то совершаю какую-то ошибку, но не вижу этого. Я вернулся и убедился, что мой код соответствует требованиям, удалил и заново добавил мою сборку, содержащую пользовательские действия, на случай, если это может быть просто случайностью. После чего, когда я пытаюсь скомпилировать из проекта ссылки на мои пользовательские действия. Он работает, но выбрасывает ArgumentNullException. Я попытался передать это bools, условные выражения и просто о муравейнике, иначе это заняло бы все, заканчивающиеся тем же самым результатом. Любые предложения по поиску и устранению неисправностей, чтобы попробовать в этом случае или очевидные вещи отсутствуют?

Вот моя ссылка на мое состояние ActivityFunc <bool> Condition.

<sap:WorkflowItemPresenter
                        HintText="Add Trigger conditional activities here"
                        Item="{Binding Path=ModelItem.Condition.Handler}" 
                        Height="40"
                        />


Вот моя ссылка на ребенка, которого я хочу запланировать после того, как условие вернет true public ActivityAction Child.

<sap:WorkflowItemPresenter
                        HintText="Add activies that happen on trigger firing"
                        Item="{Binding Path=ModelItem.Child.Handler}" 
                        Height="40"/>


Вот мое Пользовательское занятие

[Designer(typeof(TriggerDesigner)),
Description("Creates a Trigger for use by trigger conditionals"),    ToolboxCategory(ToolboxCategoryAttribute.Trigger),
ToolboxBitmap(typeof(Shaolin.Activities.ToolboxIconAttribute), "ToolboxIcons.CreateImportContext")]
public sealed class Trigger : NativeActivity
{
    /// <summary>
    /// The initial Condition that determines if the trigger should be scheduled
    /// </summary>
    /// <value>The condition.</value>
    public ActivityFunc<bool> Condition { get; set; }

    /// <summary>
    /// The resulting action that is scheduled if the Condition is true
    /// </summary>
    /// <value>The child.</value>
    public ActivityAction Child { get; set; }

    /// <summary>
    /// Gets or sets the value holding whether or not the trigger matches the condition
    /// </summary>
    /// <value>The type of the match.</value>
    public MatchType MatchType{ get; set; }

    /// <summary>
    /// Perform evaluation of Condition; if is true then schedules Child
    /// </summary>
    /// <param name="context">The execution context in which the activity executes.</param>
    protected override void Execute(NativeActivityContext context)
    {
        context.ScheduleFunc<bool>(this.Condition, new CompletionCallback<bool>(OnConditionComplete));
    }

    /// <summary>
    /// Called from Execute when Condition evaluates to true.
    /// </summary>
    /// <param name="context">The context.</param>
    /// <param name="instance">The instance.</param>
    /// <param name="result">if set to <c>true</c> [result].</param>
    public void OnConditionComplete(NativeActivityContext context, ActivityInstance instance, bool result)
    {
        //check if Condition evaluation returns true
        if (result) 
        {
            //If so then schedule child Activity
            context.ScheduleAction(Child);
        }
    }
}

}

1 Ответ

2 голосов
/ 12 октября 2010

Привет человек с таким же IP как у меня.

ModelItem. Условие равно нулю. Следовательно, ваша привязка терпит неудачу, но с небольшой помпой, что затрудняет понимание этой ситуации.

Вам необходимо реализовать IActivityTemplateFactory и настроить свою деятельность в методе Create:

Activity IActivityTemplateFactory.Create(System.Windows.DependencyObject target)
{
    return new Trigger 
    {
        DisplayName = "lol trigger",
        Condition = new ActivityFunc<bool>(),
        Child = new ActivityAction(),
        MatchType = MatchType.Lol
    };
}
...