男、それは WPF で UI 要素の位置を設定する最悪の方法です!
XAML を次のようにリファクタリングします。
<Grid Margin="5">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<ListView Grid.Row="0" Name="TableList" Margin="5"/>
<Button Grid.Row="1" Name="button3" Content="OK"
Margin="5"
Width="75"
HorizontalAlignment="Right"/>
</Grid>
分かりますか?Grid
すべての子 (この場合は aListView
と a ) の位置を処理するがありButton
ます。
はButton
2 番目の の上Row
に配置され、右に揃えられます (HorizontalAlignment
プロパティ)。
Grid
とその子の両方がを持っていMargin=5
ます。これにより、すべての子のマージンが、adiacent の子および の外部にある他のコントロールに対して等しいことが保証されGrid
ます。
また、ListView
とButton
は完全に一致しています。
あなたのアプローチの問題は、Button
Width
とそのLeft Margin
とそのを設定することですRight Margin
。の境界線Window
が一部のピクセルを消費するか、単に WPF がすべての情報をまとめて処理できず、計算を逃すため、合計が正しくない可能性がありますが、その結果、少なくとも 1 つのパラメーターを free のままにしておく必要があります。私の例ではMargins
、ウィンドウから解放しました。は他のコントロールとMargin=5
の相対的な関係のみを設定しますが、 がの左端からMargin
どれだけ離れているかは、WPF グラフィカル エンジンに計算を任せます。Button
Window