2016-11-04 11 views
0

WinFormsは罰せられないので、私ははるかに精通しています。 WinFormsでは、すぐに3つのコントロールを選択して、書式>整列>書式を中心にしてbamをクリックすることができます。ジョブが完了しました。VB.NET WPFウィンドウ/フォームに複数のコントロールを配置する方法は?

しかし、WPFでは、フォーマットタブでそれを見つけることができません。私はそれをどこか見落としたのかしら?すでに数時間Googleを検索しており、最終的にここで尋ねることにしました。

私の質問をさらに説明するための画像です。 ミドルを選択すると、コントロールが重なり合って表示されます。フォーム3 /グリッド/グループボックスの3つすべてがうまく中央に配置されるようにするにはどうすればよいですか?

質問2 =また、毎回位置を計算するのではなく、テキストボックスのスペースが同じであることを確認するにはどうすればよいですか? enter image description here

+0

レイアウトシステムを適切に使用すると、実際には多くのことが実際に簡単であることがわかります。この場合、あなたは 'Horizo​​ntalAlignment'を探しています。そして3つの列を持つグリッドに3つのコントロールを配置して、間隔を均等にします。 –

+0

あなたのコントロールの位置を_計算している場合は、間違っている可能性があります。 WPFでは、オブジェクトのX、Yプロパティを設定する必要はありません。レイアウトを作成するには、さまざまなレイアウトコントロール(グリッド、スタックパネルなど)とマージン、パディング、および配置プロパティ(他の中から)を使用します。 WinFormsとは異なる考え方が必要です。 –

+0

@NicoSchertler horizo​​ntalAlignmentは、デフォルトですべて "left"に設定されています。私は既にグループボックス内のアライメントのためにストレッチを両方ともグリッドに追加しました。 – Student

答えて

2

WPFを使用すると、別の方法で考える必要があります。私はうまくいけば私が意味するものを示す次のWindow.xamlを作成しました。私はグリッド内にグリッドを持っています。私はStackPanelsをいくつかのコントロールに使用しています。サイズ変更時に計算を行う必要はありません。私はいくつかの色を追加して、異なるグリッドの位置を示しました。列/行の高さ/幅を設定する場合

Sample Xaml with grids

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     x:Class="ThrowAwayWpfApplication.Window2" 
     Title="Window2" Height="480" Width="640"> 

    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition></RowDefinition> 
      <RowDefinition Height="Auto"></RowDefinition> 
     </Grid.RowDefinitions> 
     <Grid Grid.Row="0"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition></ColumnDefinition> 
       <ColumnDefinition></ColumnDefinition> 
      </Grid.ColumnDefinitions> 
      <StackPanel Grid.Column="0" Orientation="Vertical"> 
       <Label>Development Type</Label>     
       <ComboBox Margin="5,2,5,2"></ComboBox> 
       <Label>Development Type</Label> 
       <ComboBox Margin="5,2,5,2"></ComboBox> 
       <Label>Development Type</Label> 
       <ComboBox Margin="5,2,5,2"></ComboBox> 
       <Label>Development Type</Label> 
       <ComboBox Margin="5,2,5,2"></ComboBox> 
       <Label>Development Type</Label> 
       <ComboBox Margin="5,2,5,2"></ComboBox> 
      </StackPanel> 
      <Border Grid.Column="1" Margin="5" BorderThickness="2" BorderBrush="Red" Background="Aqua"> 
       <Canvas Grid.Column="1" Margin="10" /> 
      </Border> 
     </Grid> 
     <Grid Grid.Row="1" Background="AliceBlue"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition></ColumnDefinition> 
       <ColumnDefinition></ColumnDefinition> 
       <ColumnDefinition></ColumnDefinition> 
      </Grid.ColumnDefinitions> 
      <StackPanel Grid.Column="0" Orientation="Vertical" Margin="5"> 
       <Label>Permanent Number</Label>     
       <TextBox Margin="5,2,5,2" /> 
      </StackPanel> 
      <StackPanel Grid.Column="1" Orientation="Vertical" Margin="5"> 
       <Label>Quotation Number</Label> 
       <TextBox Margin="5,2,5,2" /> 
      </StackPanel> 
      <StackPanel Grid.Column="2" Orientation="Vertical" Margin="5"> 
       <Label>Invoice Number</Label> 
       <TextBox Margin="5,2,5,2" /> 
      </StackPanel> 
     </Grid> 
    </Grid> 
</Window> 

、あなたはまた、1行は常にグリッドの高さの20%を取る作るために割合を使用することができます。

<Grid.RowDefinitions> 
    <RowDefinition Height=2*></RowDefinition> 
    <RowDefinition Height="8*"></RowDefinition> 
</Grid.RowDefinitions> 
+0

ああ、私はあなたが何を意味するかを見ます。しかし、私はテキストボックスを短くして、フォームの中にうまく収めたいと思っていました。フォームの幅を覆うように幅を増やすのではなく、簡単に実現できますか? – Student

+1

あなたはそのサブグリッドに4番目の列を追加して、比率を正しく取得するために回答に追加したパーセンテージ方法を使って幅を使って遊びます。 –

+0

よろしく!本当にありがとう。私はいつも望んでいたように、私はGridを使っていたので、スタックパネルで遊んでください。 – Student

関連する問題