2010-10-12 4 views
0

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

Вот моя ссылка на мое состояние ActivityFunc <bool> Condition.содержания WorkflowItemPresenter исчезает сборки

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


Вот моя ссылка на ребенка, я хочу, чтобы запланировать после условие возвращает истинное 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); 
     } 
    } 
} 

}

ответ

2

Здравствуйте человек с такой же IP, как и я.

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

Вы должны реализовать 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 
    }; 
} 
+0

Испытано и одобрено. Еще раз спасибо за информацию таинственного незнакомца, которого я никогда раньше не встречал в своей жизни. Хорошего дня, сэр – Terrance

Смежные вопросы