private void MyBinding() { //DataContextを使うと単純なBindingはプロパティ名を指定するだけで済む this.DataContext = MySetting; MyBorder.SetBinding(LeftProperty, new Binding(nameof(MySetting.Left))); MySliderLeft.SetBinding(Slider.ValueProperty, new Binding(nameof(MySetting.Left))); MyBorder.SetBinding(TopProperty, new Binding(nameof(MySetting.Top))); MySliderTop.SetBinding(Slider.ValueProperty, new Binding(nameof(MySetting.Top))); //canvertが必要なBindingは手間がかかる MultiBinding mb = new MultiBinding(); mb.Converter = new MyConverter(); mb.Mode = BindingMode.TwoWay; mb.Bindings.Add(MakeBinding(nameof(MySetting.A))); mb.Bindings.Add(MakeBinding(nameof(MySetting.R))); mb.Bindings.Add(MakeBinding(nameof(MySetting.G))); mb.Bindings.Add(MakeBinding(nameof(MySetting.B))); MyBorder.SetBinding(Border.BackgroundProperty, mb); Binding MakeBinding(string str) { return(new Binding() { Source = MySetting, Path = new PropertyPath(str), Mode = BindingMode.TwoWay }); } }
public MainWindow() { InitializeComponent(); ButtonSave.Click += ButtonSave_Click; ButtonColorCyan.Click += (o, e) => { MyBorder.Background = Brushes.Cyan; }; MySetting = new MySetting(); MySetting.BackgoundColor = Colors.Red; Binding b = MakeBinding(MySetting.LeftProperty); MyBorder.SetBinding(LeftProperty, b); MySliderLeft.SetBinding(Slider.ValueProperty, b); b = MakeBinding(MySetting.TopProperty); MyBorder.SetBinding(TopProperty, b); MySliderTop.SetBinding(Slider.ValueProperty, b); MyBorder.SetBinding(Border.BackgroundProperty, MakeBinding(MySetting.BackgrounBrushProperty)); //this.DataContext = MySetting; }