ウィンドウが大きくなるとユーザーインターフェイスが大きくなるように、ユーザーインターフェイスをスケーリングする必要があるWPFアプリケーションがあります。ダイアログの 1 つで、アイテムのリストをユーザーに提示する必要があり、ユーザーはそれらの 1 つをクリックする必要があります。リストには、1 ~ 15 ~ 20 個の項目が含まれます。個々の項目のフォント サイズを、リスト内の他の項目のフォント サイズと同じくらい大きくしたいのですが、同時に、ウィンドウを大きくするとフォント サイズも大きくしたいと考えています。
現時点では、私のテスト コードは次のようになります。
<Window x:Class="WpfApplication4.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="clr-namespace:WpfApplication4"
Title="Window1" Height="480" Width="640">
<ScrollViewer>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="30*" MinHeight="30"/>
<RowDefinition Height="30*" MinHeight="30"/>
<RowDefinition Height="30*" MinHeight="30"/>
</Grid.RowDefinitions>
<Button Grid.Row="0" MaxHeight="100"><Viewbox><TextBlock>T</TextBlock></Viewbox></Button>
<Button Grid.Row="1" MaxHeight="100"><Viewbox><TextBlock>Test</TextBlock></Viewbox></Button>
<Button Grid.Row="2" MaxHeight="100"><Viewbox><TextBlock>Test Longer String</TextBlock></Viewbox></Button>
</Grid>
</ScrollViewer>
</Window>
アプリケーションを起動して Window を大きくすると、すべて問題ないように見えます。ウィンドウの幅を狭くすると、テキストのフォント サイズはTest Longer String
小さくなりますが、T
とのフォント サイズはTest
変わりません。これが発生する理由は理解しています。ビューボックスはコンテンツを最大サイズにスケーリングします。私が知りたいのは、この問題を解決するためにどのような方法を使用する必要があるかです。
コントロールに特定のフォント サイズを指定したくありません。640x480 などの低解像度の画面でこれを実行する人もいれば、より大きなワイドスクリーンを使用する人もいるからです。
編集:
コードを次のように変更しようとしました。
<ScrollViewer>
<Viewbox>
<ItemsControl>
<Button>Test 2</Button>
<Button>Test 3</Button>
<Button>Test 4 afdsfdsa fds afdsaf</Button>
<Button>Test 5</Button>
<Button>Test 5</Button>
<Button>Test 5</Button>
<Button>Test 5</Button>
<Button>Test 5</Button>
</ItemsControl>
</Viewbox>
</ScrollViewer>
ただし、ボタンの境界線のサイズも大きくなるため、大画面ではボタンの境界線の幅が 1 センチメートルになります。