男、それは 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ます。
はButton2 番目の の上Rowに配置され、右に揃えられます (HorizontalAlignmentプロパティ)。
Gridとその子の両方がを持っていMargin=5ます。これにより、すべての子のマージンが、adiacent の子および の外部にある他のコントロールに対して等しいことが保証されGridます。
また、ListViewとButtonは完全に一致しています。
あなたのアプローチの問題は、Button Width とそのLeft Margin とそのを設定することですRight Margin。の境界線Windowが一部のピクセルを消費するか、単に WPF がすべての情報をまとめて処理できず、計算を逃すため、合計が正しくない可能性がありますが、その結果、少なくとも 1 つのパラメーターを free のままにしておく必要があります。私の例ではMargins、ウィンドウから解放しました。は他のコントロールとMargin=5の相対的な関係のみを設定しますが、 がの左端からMarginどれだけ離れているかは、WPF グラフィカル エンジンに計算を任せます。ButtonWindow