0

悪いタイトルで申し訳ありませんが、WPFは明らかに私に嘘をついているので、他の言い方がわかりませんでした。問題を示すために、非常に単純なサンプルを再現しました。

XAML:

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" >
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="50"/>
            <RowDefinition Height="50"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>

        <Button Height="50" Grid.Row="0" ></Button>
        <Button Height="100" Grid.Row="1" Grid.RowSpan="2"> </Button>
    </Grid>
</Window>

これはあなたが得るものです:

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

XAML Designerは、行1と2の高さが50であることを示していますが、明らかに等しくないため、2番目の行の高さを50にすることはできません。これは、2番目のボタンの行スパンを設定しているという事実と関係があると思われます。プロパティを2に設定しましたが、これがピクセル単位で設定した行の高さを台無しにする理由がわかりません。

行1と2の高さが50に固定されるように強制するにはどうすればよいですか?

編集:私は私の質問について詳しく説明する必要があると思います。グリッドの仕組みをひどく誤解しているかもしれませんので、ご容赦ください。

まず第一に、私が理解するのに苦労しているのは

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

行1と2の高さが50と表示されるのはなぜですか?それらは明らかに等しくないため、行2の高さを50にすることはできません。これはデザインビューのバグですか、それとも予想される動作ですか。

上に示した行の定義を作成したとき、下の画像は私が期待したものであるためです(下の画像は私のポイントを示すためにフォトショップされていることに注意してください)。

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

行1、2の高さが50に固定され、ボタンの残りの部分が3番目の行の高さに設定されている場合。

4

1 に答える 1

3

まず第一に、コントロールがグリッドの行または列のサイズから外れる場合があります。したがって、これは予想される動作です (誰も嘘をついたり、だましているわけではありません)。

高さを使用する代わりに、MaxHeight プロパティを使用します。これを試してください。

<Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="50"/>
            <RowDefinition MaxHeight="50"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <Button Height="50" Grid.Row="0" ></Button>
        <Button Height="100" Grid.Row="1"></Button>
</Grid>

編集:

xaml のデザイン ビューは、非常に小さな領域に多くのものが表示されるため、非常に煩雑です。何百もの行があり、UI コンポーネントが大きい場合、一部のコントロールがビューに表示されないことがあります。

そこで、xaml design viewer を解析する代わりに、以下の2つを使えばグリッドのUIが分かりやすくなります。

  1. ShowGridLinesプロパティ offGridを true に設定します。これにより、点線の境界線が表示されます。
    2. WPFInspecterを使用する
于 2012-10-04T05:30:15.763 に答える