0

私は wpf グリッドを使用し、コントロールを動的に追加/削除する wpf アプリケーションを持っています。コントロールを追加することは問題ありませんが、削除するとグリッドから消えますが、ラップ パネルの場合と同様に、残りの要素で埋められるようにしたい空の場所が残ります。

以前はラップ パネルを使用していましたが、正常に動作しましたが、グループ ボックス間にスプリッタ コントロールを追加する必要があるため、ラップ パネルをグリッドに置き換えました。

ここにウィンドウのスクリーンショットがあります

ここに画像の説明を入力

中央のグループボックスを削除すると、次のように表示されます

ここに画像の説明を入力

3 番目のグループボックスが 2 番目のグループボックスの場所を占有するようにします。記録のために、グリッドのサイズ変更イベントを使用しました。これは、それが持っているコードです

 foreach (var control in this.DynamicGrid.Children)
        {
            if (control.GetType() == typeof(GroupBox))
            {
                GroupBox groupBox = control as GroupBox;
                groupBox.Height = this.DynamicGrid.ActualHeight;
                this.WrapPanel1.Width = this.DynamicGrid.ActualWidth;
            }
        }

Wrappanel には、要素を追加/削除する動的グリッドがあります。

4

2 に答える 2

0

あなたが設定することができます <ColumnDefinition width="Auto" />

列を非表示にするために使用 Visibility="Collapsed"します。

于 2014-05-02T13:20:29.173 に答える
0

Grid私はあなたの問題を見ることができません... 「コードでコントロールを使用するにはどうすればよいですか?」と尋ねているようです。Grid.ColumnDefinitions実行時に(またはその他のGridプロパティ)を変更したい場合は、それを変更してみませんか? GridMSDN のクラスページを見ると、イン コードを操作する方法を正確に示す長いコード例が表示Gridされます。たとえば、次のようなことができます。

ColumnDefinition rightHandColumn = new ColumnDefinition();
YourGrid.ColumnDefinitions.Add(rightHandColumn);
YourGrid.Children.Add(uiElementCurrentlyInGrid);
YourGrid.SetRow(uiElementCurrentlyInGrid, 0);
YourGrid.SetColumn(uiElementCurrentlyInGrid, 1);

次に、アイテムを削除するには:

Grid.Children.Remove(uiElementCurrentlyInGrid);
Grid.ColumnDefinitions.Remove(rightHandColumn);
于 2014-05-02T13:31:20.953 に答える