0

WPFアプリケーションの動作がかなり奇妙になりました。実行時のボタンのXY位置は、Visual Studioのxaml-Editorで設定したときのXY位置とは異なるようです(名前はありますか?)

配置やパネルは設定されていません。マージンで設定しただけです。私のボタンには次のコードがあります:

<Button Content="OK" Height="23" Margin="213,319,4,7" Name="button3" Width="75" IsCancel="True" Click="button3_Click" IsEnabled="False" />

編集:

サイズ変更できないダイアログであるため、マージンは固定されています。ご覧のとおり、ボタンは少し左右に移動しています。

xaml-エディター:

ここに画像の説明を入力してください

ランタイム:

ここに画像の説明を入力してください

それはなぜですか、どうすれば修正できますか?

4

2 に答える 2

0

配置、マージン、およびパディングの概要に関する以下のリンクは、それがどのように機能するかを理解するのに役立つと思いますか?

それ以外の場合は、Stackpanel、Wrappand、または Grid などのパネル ラッパーを配置します。コントロールのレイアウトを操作するのに適しています

編集: 問題は ResizeMode="NoResize" にありました。Windowタグでこの属性を削除すると、位置合わせがうまくいきます

参照先へのリンク

于 2013-03-12T13:23:28.117 に答える
0

男、それは 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ます。

また、ListViewButtonは完全に一致しています。

あなたのアプローチの問題は、Button Width そのLeft Margin そのを設定することですRight Margin。の境界線Windowが一部のピクセルを消費するか、単に WPF がすべての情報をまとめて処理できず、計算を逃すため、合計が正しくない可能性がありますが、その結果、少なくとも 1 つのパラメーターを free のままにしておく必要があります。私の例ではMargins、ウィンドウから解放しました。は他のコントロールとMargin=5の相対的な関係のみを設定しますが、 がの左端からMarginどれだけ離れているかは、WPF グラフィカル エンジンに計算を任せます。ButtonWindow

于 2016-08-31T11:59:29.043 に答える