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 }); } }
private void Button_Click(object sender, RoutedEventArgs e) { MyBorder myBorder = new MyBorder(); myBorder.Name = GetControlsName("BTN"); myBorder.MouseDoubleClick += Button_MouseDown; myBorder.btn.Margin = new Thickness(15 + cot++ *100, 20, 5, 5); grid.Children.Add(myBorder); }
public void Reset() { isMaked = false; mazeBlocks = new MazeBlocks(mazeSize); StartBlock = mazeBlocks.GetBorder(RandomPick <MyGridPoint> .Pick(new List <MyGridPoint> { new MyGridPoint(0, (new Random().Next() % (mazeSize.Cols / 2))), new MyGridPoint(0, (new Random().Next() % (mazeSize.Rows / 2))) })); StartBlock.mazeMark = MazeMark.Maze; ListFrontier = new List <MyBorder>(); ListFrontier.AddRange(mazeBlocks.GetMarkedNeightborPoint(StartBlock.point, MazeMark.Map)); }
public MazeBlocks(MyGridSize myGridSize) { this.MyBorder = new MyBorder[myGridSize.Rows, myGridSize.Cols]; this.size = myGridSize; for (int i = 0; i < size.Rows; i++) { for (int j = 0; j < size.Cols; j++) { MyBorder[i, j] = new MyBorder(new MyGridPoint(i, j)); MyBorder[i, j].BeginInit(); MyBorder[i, j].BorderBrush = Brushes.Black; MyBorder[i, j].BorderThickness = new Thickness(WallThick, WallThick, WallThick, WallThick); MyBorder[i, j].EndInit(); } } }
/// <summary> /// 生成按钮 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void StackPanel_MouseLeftButtonDown_1(object sender, MouseButtonEventArgs e) { MyBorder myBorder = new MyBorder(); myBorder.Name = GetControlsName("BTN"); myBorder.MouseDoubleClick += Button_MouseDown; myBorder.btn.Margin = new Thickness(20 + cot++ *100, height, 5, 5); //换行 if (cot > 10) { cot = 0; height += 40; } grid.Children.Add(myBorder); }
public MainWindow() { InitializeComponent(); ButtonSave.Click += ButtonSave_Click; ButtonLoad.Click += ButtonLoad_Click; ButtonColorCyan.Click += (o, e) => { MyBorder.Background = Brushes.Cyan; }; ButtonColorMediumPurple.Click += (o, e) => MyBorder.Background = Brushes.MediumPurple; MySetting = new MySetting(); this.DataContext = MySetting; MyBindign(); //Binding、XAMLに書いてもできるけど、プロパティ名変更する可能性を考えるとこっちのコードで書いたほうがいい? MyBorder.SetBinding(LeftProperty, new Binding(nameof(MySetting.Left))); MySliderLeft.SetBinding(Slider.ValueProperty, new Binding(nameof(MySetting.Left))); }
public MainWindow() { InitializeComponent(); ButtonSave.Click += ButtonSave_Click; ButtonColorCyan.Click += (o, e) => { MyBorder.Background = Brushes.Cyan; }; MySetting = new MySetting(); //MySetting.BackgoundColor = Colors.Red; this.DataContext = MySetting; MyBorder.SetBinding(LeftProperty, new Binding(nameof(MySetting.Left))); MySliderLeft.SetBinding(Slider.ValueProperty, new Binding(nameof(MySetting.Left))); MyBorder.SetBinding(Border.BackgroundProperty, new Binding(nameof(MySetting.BackgroundSolidBrush))); //this.DataContext = MySetting; }
public void SetWallThinkness(MyBorder A, MyBorder B) { int r = A.point.Row - B.point.Row; int c = A.point.Col - B.point.Col; if (r == 0 && c > 0) { A.WallThickness.Left = 0; B.WallThickness.Right = 0; } else if (r > 0 && c == 0) { A.WallThickness.Top = 0; B.WallThickness.Bottom = 0; } else if (r == 0 && c < 0) { A.WallThickness.Right = 0; B.WallThickness.Left = 0; } else if (r < 0 && c == 0) { A.WallThickness.Bottom = 0; B.WallThickness.Top = 0; } }
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; }
private void MyBindign() { //canvertが必要なBindingはXAMLに書いたほうがいいかも //XAMLに書いておけばDataContextを変更したときに自動で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 }); } }