public void UpdateSourceTest() { var textBox = new TextBox(); var fakeVm = new FakeVm(); var binding = new Binding("Value") { Source = fakeVm, UpdateSourceTrigger = UpdateSourceTrigger.Explicit, NotifyOnSourceUpdated = true, NotifyOnTargetUpdated = true, Mode = BindingMode.TwoWay }; BindingOperations.SetBinding(textBox, TextBox.TextProperty, binding); textBox.DataContext = fakeVm; var bindingExpression = BindingOperations.GetBindingExpression(textBox, TextBox.TextProperty); bindingExpression.UpdateTarget(); Assert.AreEqual("1", textBox.Text); textBox.SetCurrentValue(TextBox.TextProperty, "2"); Assert.AreEqual("1", fakeVm.Value); bindingExpression.UpdateSource(); Assert.AreEqual("2", fakeVm.Value); }
private EitherControl InitView(Lifetime lifetime, OptionsSettingsSmartContext settings) { var grid = new Grid { Background = SystemColors.ControlBrush }; grid.ColumnDefinitions.Add(new ColumnDefinition()); grid.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto }); grid.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto }); grid.RowDefinitions.Add(new RowDefinition { Height = GridLength.Auto }); grid.RowDefinitions.Add(new RowDefinition()); var margin = new Thickness(3); var label = new Label { Content = "Configuration:", Margin = margin }; var text = new TextBox { AcceptsReturn = true, Margin = margin }; settings.SetBinding<OrderUsingsSettings, string>( lifetime, x => x.OrderSpecificationXml, text, TextBox.TextProperty); Grid.SetRow(text, 1); Grid.SetColumnSpan(text, 3); var buttonPadding = new Thickness(3); var resetButton = new Button { Content = "Reset", Margin = margin, Padding = buttonPadding }; resetButton.Click += (s, e) => text.SetCurrentValue(TextBox.TextProperty, string.Empty); Grid.SetColumn(resetButton, 1); var addBasicButton = new Button { Content = "Create basic configuration", Margin = margin, Padding = buttonPadding }; addBasicButton.Click += (s, e) => { var asm = typeof(OrderUsingsOptionsPage).Assembly; Stream stream = asm.GetManifestResourceStream("OrderUsings.ReSharper.Settings.DefaultConfiguration.xml"); if (stream != null) { using (var reader = new StreamReader(stream)) { text.SetCurrentValue(TextBox.TextProperty, reader.ReadToEnd()); } } }; Grid.SetColumn(addBasicButton, 2); grid.Children.Add(label); grid.Children.Add(text); grid.Children.Add(resetButton); grid.Children.Add(addBasicButton); return grid; }