示例#1
0
        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
                });
            }
        }
示例#2
0
        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);
        }
示例#3
0
 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));
 }
示例#4
0
 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();
         }
     }
 }
示例#5
0
        /// <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);
        }
示例#6
0
        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)));
        }
示例#7
0
        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;
        }
示例#8
0
            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;
                }
            }
示例#9
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;
        }
示例#10
0
        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
                });
            }
        }