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; }