2

簡単に言えば、3 つの同じ高さの行と 2 つのボタンを持つ 1 つのグリッドがあります。最初の行に最初のボタンを配置し、次に 2 番目の行を空にし、最後に 3 番目の行に 2 番目のボタンを配置します。このようにして、相対的なサイズのボタン間の間隔を確保します。絶対マージン値をハードコーディングするのではなく、これが必要です。そのための XAML は次のとおりです。

                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="*" />
                        <RowDefinition Height="*" />
                        <RowDefinition Height="*" />
                    </Grid.RowDefinitions>
                    <Button Grid.Row="0">Button 1</Button>
                    <Button Grid.Row="2">Button 2</Button>
                </Grid>

よく働く!ここで必要な追加機能は、すべてをスケーラブルにすることです。そのため、Viewbox に配置します。

            <Viewbox>
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="*" />
                        <RowDefinition Height="*" />
                        <RowDefinition Height="*" />
                    </Grid.RowDefinitions>
                    <Button Grid.Row="0">Button 1</Button>
                    <Button Grid.Row="2">Button 2</Button>
                </Grid>
            </Viewbox>

そしていきなりレイアウト崩れ。Viewbox によって提供されるスケーリングを取得しますが、ボタン間に空のスペースがありません。2つの質問:

  1. Viewbox がここで問題を起こしているのはなぜですか?
  2. どうすればこれを回避できますか? 柔軟性が必要なので、グリッド内の任意の数の空の行/列で区切ることができる任意の数のボタンを使用できると想像してください。
4

2 に答える 2

0

これを試して...

     <Viewbox>
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="*" />
                <RowDefinition 
                        MinHeight="{Binding Path=ActualHeight,
                                   ElementName=MyButton1}"
                        Height="*" />
                <RowDefinition Height="*" />
            </Grid.RowDefinitions>
            <Button Grid.Row="0" x:Name="MyButton1">Button 1</Button>
            <Button Grid.Row="2">Button 2</Button>
        </Grid>
    </Viewbox>

ボタンがすべて同じ高さであると厳密に仮定します。

そして、これが発生する理由については、これを確認してください... http://connect.microsoft.com/VisualStudio/feedback/details/403562/wpf-grid-layout-is-broken-when-put-in-viewbox

于 2012-05-14T07:30:35.073 に答える