web-dev-qa-db-ja.com

C#WPFコントロールの位置、幅、高さをプログラムで設定する方法は?

最初のWPFアプリケーションを実行しています。フォームが最大化または全画面表示されているときに、コントロールのサイズが変更されず、同じ場所にとどまるという問題があります。フォームのみが最大化されます。

winformでは、次のように.csで調整できます。

panel6.Width
panel6.Height
panel6.Location

これは、フォームが最大化されている場合に設定するのに役立ちます。画面の解像度と計算を取得して値を取得し、幅、高さ、位置に設定できるいくつかの算術を使用してそれを行います。しかし、これはIS WINFORMです。

wPFで最大化および全画面表示するためにこの問題にどのように対処しますか?プログラムで.csファイルを介して行われる方法はありますか?または、WPFにはこの問題に対処するための簡単な組み込みコントロールが付属していますか?

この例では、WPFでdockpanelを使用しているとします。

ウィンドウが最大化されていても他のコントロールが残っている場合は無意味です。

11
Psychocryo

WidthおよびHeightを設定するには:

dockpanel1.width = 230;
dockpanel1.height = 230;

場所については、wpfMarginを使用します:

dockpanel1.Margin = new Thickness(0,440,836,40);
28
Psychocryo

キャンバス上の子要素をプログラムで移動することができます。

XAMLで:

<Canvas>
    <YourElement Canvas.Top="x" Canvas.Left="y"/>
</Canvas>

C#の場合:

Canvas.SetTop(YourElement, newX);
Canvas.SetLeft(YourElement, newY);
15
Roger Lew

(コントロールの以前の位置*レイアウトの新しいサイズ)/レイアウトの以前のサイズ=コントロールの新しい位置のようないくつかの計算を使用します

ただし、最も簡単な方法は、XAMLグリッドを使用して列と行を配置し、列と行のサイズを*に設定することです。したがって、レイアウトサイズが変更されると、グリッドの子である親のサイズ変更を参照してコントロールが再配置されます。それ。また、コントロールのマージンを列と行に設定するだけで、自動サイズ変更可能なコントロールを持つこともできます。伸縮するように設定された水平および垂直の配置を忘れないでください。

2
Eftekhari

特定の問題については、 DockPanel を使用して、その中にコントロールを配置することをお勧めします。これが最初のbingの結果です: WPFチュートリアル|ドックパネル

そして、flqとblindmeisによってすでに示唆されているように、レイアウトパネルを調べてください。これにより、WPFでの生活が本当にシンプルになります。

1
publicgk

子アイテムを明示的に配置したい場合は、キャンバスパネルを使用します。

<Canvas>
    <YourElement Canvas.Top="x" Canvas.Left="y"/>
</Canvas>
0
Navid Rahmani

あなたはwpfのすべての異なるレイアウトパネル(グリッド、ドックパネル、スタックパネル、キャンバス...)を見る必要があります

したがって、Panelのプロパティを設定した場合、LayoutPanelが変更された場合の動作は異なります。

0
blindmeis