У меня есть приложение WPF, где пользовательский интерфейс должен быть масштабирован так, чтобы он стал больше, если окна стали больше. В одном из диалогов мне нужно представить список предметов пользователю, и пользователь должен нажать на один из них. Список будет содержать от 1 до 15-20 пунктов. Я хочу, чтобы размер шрифта для каждого отдельного элемента был таким же большим, как размер шрифта для других элементов в списке, но в то же время я хочу, чтобы размер шрифта увеличивался, если окно стало больше.Расширение шрифта WPF
На данный момент мой тестовый код выглядит ниже.
<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>
Если приложение запущено и Окно сделано широким, все выглядит нормально. Если ширина окна уменьшается, размер шрифта Test Longer String
делается меньше, но размер шрифта для T
и Test
остается неизменным. Я понимаю, почему это происходит - окно просмотра масштабирует содержимое до максимального размера. Я хочу знать, какой метод я должен использовать для решения этой проблемы.
Я не хочу давать контроль определенным размерам шрифта, потому что некоторые люди будут запускать это на экранах с низким разрешением, например 640x480, а другие будут использовать более крупные широкоформатные экраны.
EDIT:
Я попытался изменить свой код на следующее:
<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>
Но с размером кнопки границы увеличиваются, так что на больших экранах границы кнопок становятся сантиметрами шириной.
Я обновил сообщение. См. Раздел «Редактировать». Короче говоря, если я использую TextBlock, а не Button, я теряю интерфейс «Button» -user (эффект клика и т. Д.). Если я использую кнопку и помещаю ее в окно просмотра, вся кнопка, включая ее границу, будет изменена. Я не хочу, чтобы рамка на 1 см была только потому, что программа максимизирована. – Martin