0

これが私のコードです:

public void Repaint() {
        canvas1.Children.Clear();
        ObservableCollection<ClassBox> classes = viewModel.Classes;
        foreach (ClassBox j in classes) {
            // connect our ui element to the mouse handler if not done already
            if (!j.MouseActive) {
                j.Box.PreviewMouseLeftButtonUp += Handle_MouseUp;
                j.Box.PreviewMouseLeftButtonDown += Handle_MouseDown;
                j.Box.PreviewMouseMove += Handle_MouseMove;
                j.MouseActive = true;
                // Heres should the code be written (something like :)
                // j.Box.SetColor(Change_Color(value));
            }
            canvas1.Children.Add(j.Box);
       } }

したがって、上記のコードは、メソッドを呼び出すときにボックスがどのように再描画されるかを示しています。正常に動作しますが、コードの次の部分に進みます。

 private void Change_ColourBox(object sender, System.Windows.RoutedEventArgs e)
    {
        var element = sender as FrameworkElement;
        ObservableCollection<ClassBox> classes = viewModel.Classes;
        foreach (ClassBox j in classes)
        {
            // connect our ui element to the mouse handler if not done already
            if (sender == BoxStandard)
            {
                j.Box.Background = new SolidColorBrush(Colors.White);
                j.Box.Foreground = new SolidColorBrush(Colors.Black);
                Repaint();
            } }

"Change_Color"このコードは、ボタンが押されたときに色を変更する必要があることを示しています。ボタンを XAML で実装し、名前を付けました (この場合は"BoxStandard".

次のコード スニップは、イベント ハンドラーを介してボックスを生成する場所です。

 private void Spawn_Box(object sender, System.Windows.RoutedEventArgs e) {
      viewModel.GetURController.AddAndExecute(new AddClassCommand(viewModel));
    }

私はそれを並べるつもりです:私は要素に定義済みの色を与えます。クリックイベント「Change_Color」で色を変更すると、目的の色に変わります。しかし、キャンバスに新しい要素を作成すると、定義済みの色になります。変更した色でスポーンしたい。

わからないことがあれば質問してください もっと詳しく説明します!

  • ClassBox は、ボックスのプロパティで構成されるオブジェクトです。再描画は、前景色/背景色だけでなく、ボックスの配置の違いも計算します
4

0 に答える 0