WPFを使用すると、別の方法で考える必要があります。私はうまくいけば私が意味するものを示す次のWindow.xamlを作成しました。私はグリッド内にグリッドを持っています。私はStackPanelsをいくつかのコントロールに使用しています。サイズ変更時に計算を行う必要はありません。私はいくつかの色を追加して、異なるグリッドの位置を示しました。列/行の高さ/幅を設定する場合
<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>
レイアウトシステムを適切に使用すると、実際には多くのことが実際に簡単であることがわかります。この場合、あなたは 'HorizontalAlignment'を探しています。そして3つの列を持つグリッドに3つのコントロールを配置して、間隔を均等にします。 –
あなたのコントロールの位置を_計算している場合は、間違っている可能性があります。 WPFでは、オブジェクトのX、Yプロパティを設定する必要はありません。レイアウトを作成するには、さまざまなレイアウトコントロール(グリッド、スタックパネルなど)とマージン、パディング、および配置プロパティ(他の中から)を使用します。 WinFormsとは異なる考え方が必要です。 –
@NicoSchertler horizontalAlignmentは、デフォルトですべて "left"に設定されています。私は既にグループボックス内のアライメントのためにストレッチを両方ともグリッドに追加しました。 – Student