2013-02-01 30 views
5

मुझे वर्कफ़्लो फाउंडेशन में कस्टम गतिविधियों और डिज़ाइनरों का उपयोग करने में समस्या आ रही है।वर्कफ़्लो फाउंडेशन - कस्टम डिज़ाइनर में इनरगुमेंट असाइन करें

[Designer(typeof(TesteDesigner))] 
public sealed class Teste : CodeActivity 
{ 
    // Define an activity input argument of type string 
    [RequiredArgument] 
    public InArgument<string> Text { get; set; } 

    // If your activity returns a value, derive from CodeActivity<TResult> 
    // and return the value from the Execute method. 
    protected override void Execute(CodeActivityContext context) 
    { 
     // Obtain the runtime value of the Text input argument 
     string text = context.GetValue(this.Text); 
    } 
} 

और डिजाइनर निम्नलिखित है:: प्रश्न के लिए, मैं एक बहुत ही सरल गतिविधि के रूप में नीचे दिखाया गया है बना लिया है,

<sap:ActivityDesigner x:Class="ActivityDesignerLibrary1.TesteDesigner" 
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
         xmlns:sap="clr-namespace:System.Activities.Presentation;assembly=System.Activities.Presentation" 
         xmlns:sapv="clr-namespace:System.Activities.Presentation.View;assembly=System.Activities.Presentation" 
         xmlns:System="clr-namespace:System;assembly=mscorlib" 
         xmlns:Converters="clr-namespace:System.Activities.Presentation.Converters;assembly=System.Activities.Presentation"> 
    <sap:ActivityDesigner.Resources> 
     <Converters:ArgumentToExpressionConverter x:Key="ArgumentToExpressionConverter" /> 
    </sap:ActivityDesigner.Resources> 
    <Grid> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition /> 
      <ColumnDefinition /> 
     </Grid.ColumnDefinitions> 
     <TextBlock Text="Valor: " 
        VerticalAlignment="Center" /> 
     <sapv:ExpressionTextBox HintText="Valor" 
           Expression="{Binding Path=ModelItem.Text, Mode=TwoWay, Converter={StaticResource ArgumentToExpressionConverter}, ConverterParameter=In}" 
           ExpressionType="{x:Type System:String}" 
           OwnerActivity="{Binding Path=ModelItem}" 
           UseLocationExpression="True" 
           Grid.Column="1" 
           Margin="3,0,0,0" /> 
    </Grid> 
</sap:ActivityDesigner> 

जब मैं पाठ बॉक्स में कुछ लिखते हैं, मैं एक त्रुटि प्राप्त करें: अमान्य एल-मान अभिव्यक्ति, लेकिन यदि मैं प्रॉपर्टी ग्रिड पर मान टाइप करता हूं, तो टेक्स्टबॉक्स अपडेट किया जाता है।

क्या किसी ने इसे कभी देखा है?

धन्यवाद। अपने XAML से

+0

क्या आप सुनिश्चित हैं कि आपका एसएससीसीई सही है? जैसा कि यह खड़ा है, डिजाइन के समय, 'टेक्स्ट' * शून्य * होगा, जो पहली बार' ArgumentToExpressionConverter' के साथ समस्याएं पैदा कर सकता है। अपने 'गतिविधि' के भीतर 'IActivityTemplateFactory' को लागू करने का प्रयास करें,' टेक्स्ट 'को एक नए' इनरग्यूमेंट 'के बराबर सेट करें, अपना वर्कफ़्लो दोबारा बनाएं (इसे टूलबॉक्स से डिज़ाइन सतह पर खींचें!) और देखें कि यह आपकी समस्या को हल करता है या नहीं। यदि ऐसा है, तो मुझे बताएं और मैं इसे एडीएल विवरण के साथ एक उत्तर में बदल दूंगा। – Will

+0

यदि आप आईएटीएफ के बारे में अधिक जानकारी चाहते हैं, [यह कैसे काम करता है और इसका उपयोग कैसे किया जाता है इसके बारे में मेरे उत्तरों की जांच करें] (http://stackoverflow.com/search?q=user%3A1228+is%3Aanswer+IActivityTemplateFactory)। – Will

+0

'टेक्स्ट' डिज़ाइन समय पर शून्य नहीं होगा। यदि आप इसे सही तरीके से बांधते हैं तो यह 'ExpressionTextBox' पर कुछ लिखने के समय से शून्य नहीं होगा। अन्यथा आप उदाहरण के लिए 'कैशमैटाडाटा' पर सत्यापन नहीं कर पाएंगे। – Joao

उत्तर

4

निकालें UseLocationExpression संपत्ति या झूठी करने के लिए इसे बदल जाते हैं। आपका शेष कोड सही लगता है।

चेक MSDN पर संपत्ति की टिप्पणी:

A location expression (or L-value expression) is a type of expression that evaluates to an identifier and can be placed on the left hand side of an assignment statement. When you are binding the ExpressionTextBox to an Out argument, you would set this property to True.

यह केवल प्रयोग की जाने वाली है जब आप एक OutArgument बाध्य करने के लिए चाहते हैं।

+0

धन्यवाद जोटा, यह एक आकर्षण की तरह काम किया !!! –