Click here to Skip to main content
15,889,216 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
My requirement is: selecting different template(for 4 different user)in WPF using WF4 custom code.As for now i have created only one template per user

I have created a ActivityLibrary,contains codeactivity,activity.xaml + workflowconsoleapplication + WPFapp (to host the workflow)activity.xaml contains 2 arguments one is In and one is out.
Codeactivity contians simple code below.
C#
public sealed class VisitorCodeActivity : CodeActivity<String>
    {
        // Define an activity input argument of type string
        public InArgument<String> Visit { get; set; }
        public OutArgument<String> output { get; set; }

        // If your activity returns a value, derive from CodeActivity<TResult>
        // and return the value from the Execute method.
        protected override String Execute(CodeActivityContext context)
        {  
            string line = Visit.Get(context).ToString();
            return String.Format(" {0} ", Visit.Get(context)); 
        }
    }

WorkflowconsoleApp code:
C#
  namespace VisitorWorkflowConsoleApp
  {
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Enter your visit Number '1' for FirstTime and '2' for Secondtime:");
            try
            {
                string input = Console.ReadLine();                               
                VisitorCodeActivity vca = new VisitorCodeActivity();
                string result = WorkflowInvoker.Invoke<String>(vca);
                Console.WriteLine("{0}", result);
                Console.ReadKey(false);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Result is {0}:{1}", ex.Message, ex.GetType());
            }
        }
    }
}


WPFAPPcode :
C#
public partial class MainWindow : Window
   {
       public MainWindow()
       {
           InitializeComponent();
       }
       private void OncbTypeSelectionChanged(object sender, SelectionChangedEventArgs e)
       {
           string szSelection = Workflowprocess();
           if (szSelection.Trim().Equals("FirstVisit"))
           {
               spPhonenumber.Visibility = Visibility.Hidden;
               gdVisitorDetails.Visibility = Visibility.Visible;
           }
           else
           {
               txtvisiorPassdetails.Visibility = Visibility.Hidden;
               spPhonenumber.Visibility = Visibility.Visible;
               gdVisitorDetails.Visibility = Visibility.Hidden;
           }
       }

       private void OnWindowLoaded(object sender, RoutedEventArgs e)
       {
             cbType.Items.Insert(0, "FirstVisit");
             cbType.Items.Insert(0, "SecondVisit");
       }

       private string Workflowprocess()
       {
           string szoutput = string.Empty;
           string szInput = null;
           szInput = cbType.SelectedValue.ToString();
           if (!string.IsNullOrEmpty(szInput))
           {
               StringWriter writer = new StringWriter();
               try
               {
                   VisitorActivityXaml vaxObj = new VisitorActivityXaml();
                   IDictionary<String, Object> output = WorkflowInvoker.Invoke(vaxObj, new Dictionary<String, Object>
               {
                   {"Visit",szInput},

               });
                   lblDisplay.Content = (String)output["Result"];
                   writer.WriteLine("{0}",output["Result"]);
               }
               catch (Exception ex)
               {
                   Console.WriteLine("Workflow Exception:{0}:{1}", ex.Message, ex.GetType());
               }

                szoutput = writer.ToString();
           }

           return szoutput;
       }

       private void OnbtnGeneratepassClick(object sender, RoutedEventArgs e)
       {
           txtvisiorPassdetails.Visibility = Visibility.Visible;
       }
   }

If it is not the correct way of doing please suggest me correct way with any example.So that i can understand best way of working with WF and WPF.
Posted
Updated 21-Aug-13 3:49am
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900