ユーザーコントロールの相対的なスケールサイズの方法
-
06-07-2019 - |
質問
画像のようなユーザーコントロールの相対的なサイズを変更する方法(画像エディター)。
例(100%):
(ソース: stegnar.com )
UCを縮小(70%):
(ソース: stegnar.com )
まあ、これは画像エディターで実現していますが、WPFでやりたいと思います。 :)アプリケーションをさまざまな画面解像度に調整し、非表示(スクロールバーなし)にするには、これが必要です。
解決
利用可能なスペースを満たすようにコンテンツを拡大/縮小するViewBoxコントロールを試すことができます。
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication1"
Title="Window1">
<Grid>
<Viewbox StretchDirection="Both" Stretch="Uniform">
<local:UserControl1 Height="600" Width="600"/>
</Viewbox>
</Grid>
他のヒント
コンテナ全体をViewBoxに配置できます
<Viewbox StretchDirection="Both" Stretch="Uniform">
<Grid>...</Grid>
</Viewbox>
各テキストブロックを配置する必要はありません!
Viewboxの使用(Milan Nankovによると)は素晴らしいアイデアです。私があなたに警告しなければならないことの一つは、他の視覚的側面も同様にズームインまたはズームアウトすることです。
たとえば、寸法200 X 1000のTextboxは、寸法20 X 100の10倍に拡大されたTextboxとは大きく異なります。
WPFは、コンテナのサイズに応じてコントロールのサイズを変更できる多くのレイアウトオプションを提供します。ただし、テキストのサイズは変更されません。 Viewboxはこの問題を克服しますが、別の問題が発生します。ズームの前後でビューボックスに同じテキストボックスが表示されている下の画像を確認してください。
使用できるトリックの1つは、すべての textblock をビューボックスに配置することです。しかし、それはやり過ぎだと思います。私は真剣にこのトリックを支持していません。自分で確認して、実用的かどうかを返信してください。
もう1つの方法は、コントロールの高さをフォントサイズにバインドすることです。その場合、コンバータが必要になります。この返信を参照してください。 >