void OnExpressionEditorLoaded(object sender, RoutedEventArgs e)
        {
            ExpressionTextBox expressionTextBox = sender as ExpressionTextBox;
            Fx.Assert(expressionTextBox != null, "sender should be userControl");
            //bind ExpressionProperty of Expression textbox to ModelItem.Condition
            Binding b = new Binding();
            ArgumentToExpressionConverter argumentToExpressionConverter = new ArgumentToExpressionConverter();
            b.Converter = argumentToExpressionConverter;
            b.Mode = BindingMode.TwoWay;

            b.Source = this.ModelItem;
            b.Path = new PropertyPath("Condition");
            if (BindingOperations.GetBinding(expressionTextBox, ExpressionTextBox.ExpressionProperty) != null)
            {
                BindingOperations.ClearBinding(expressionTextBox, ExpressionTextBox.ExpressionProperty);
            }
            expressionTextBox.SetBinding(ExpressionTextBox.ExpressionProperty, b);
            //bind OwnerActivityProperty of Expression textbox to ModelItem
            Binding b1 = new Binding();
            b1.Source = this.ModelItem;
            if (BindingOperations.GetBinding(expressionTextBox, ExpressionTextBox.OwnerActivityProperty) != null)
            {
                BindingOperations.ClearBinding(expressionTextBox, ExpressionTextBox.OwnerActivityProperty);
            }
            expressionTextBox.SetBinding(ExpressionTextBox.OwnerActivityProperty, b1);
        }
 private void AddBindings()
 {
     var conv = new ArgumentToExpressionConverter();
     var g = DataContext as InArgumentExpressionGroup;
     if (g != null)
     {
         foreach (var item in g.Expressions)
         {
             var cp = Items.ItemContainerGenerator.ContainerFromItem(item) as ContentPresenter;
             var extb = WPFTree.FindVisualChild<ExpressionTextBox>(cp);
             if (extb != null)
             {
                 var binding = new Binding
                 {
                     Path = new PropertyPath("OwnerModelItem." + item.Name),
                     Mode = BindingMode.TwoWay,
                     Converter = conv,
                     ConverterParameter = "In"
                 };
                 extb.SetBinding(ExpressionTextBox.ExpressionProperty, binding);
             }
         }
     }
     addBindingsScheduled = false;
 }