0

コンテンツをスケーリングせずにグリッドの列と行にスケール変換を適用することは可能ですか?

各セルのコンテンツを、拡大縮小せずにセルに合わせて単純にサイズ変更したいと思います (たとえば、テキストのフォント サイズは同じままです)。

たとえば、次の XAML では、ボタンのサイズを調整するのではなく、サイズを変更したいと考えています。

<Grid Name="grid1" RenderTransformOrigin="0.5, 0.5">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="300" />
                <ColumnDefinition Width="300" />
                <ColumnDefinition Width="300" />
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition Height="80"/>
                <RowDefinition Height="80"/>
            </Grid.RowDefinitions>
            <Grid.RenderTransform>
                <ScaleTransform ScaleX="{Binding Value, ElementName=slider1 }" ScaleY="{Binding Value, ElementName=slider1 }"
                                />
            </Grid.RenderTransform>
            <Button Content="Button3" Margin="6" Name="button3" />
            <Button Content="Button4" Grid.Column="1" Margin="6" Name="button4" />
            <Button Content="Button5" Grid.Column="2" Margin="6" Name="button5" />
            <Button Content="Button6" Grid.Column="0" Grid.Row="1" Margin="6" Name="button6" />
</Grid>
4

1 に答える 1

0

適用しているメソッドでは、変換がすべての子コントロールのレンダリングにも適用されるため、これは不可能です。

ただし、コードを見ると、スライダーの位置に基づいてグリッドの列のサイズを変更する必要があります。より簡単な方法は、すべての列を に設定しWidth="*"(各列の幅が等しいという効果があります)、変換を削除し、代わりにグリッドの幅全体をスライダーにバインドすることです (調整が必要な場合があります)。スライダーの範囲を合わせてください!)。

ただし、RenderTransform は周囲のレイアウトに影響を与えず、Width を変更すると影響を受けるため、RenderTransform とは異なる効果があります。それが問題になる場合はコメントを投稿してください。別の解決策があるかもしれません...

于 2012-06-14T12:52:47.727 に答える