Я использую динамические ресурсы для установки размера шрифта элементов пользовательского интерфейса, чтобы на маленьком планшете текст был немного больше, чтобы его было легче читать, но меньше на устройстве с очень маленьким экраном, которое мне также нужно поддерживать.Отлично работает.
Что не работает, так это масштабирование строк, содержащих этот текст.Например (отредактировано для краткости):
Определения ресурсов в App.xaml:
<ResourceDictionary>
<x:Int32 x:Key="Std32RowHeight">50</x:Int32>
<x:Double x:Key="StdRowHeight">40</x:Double>
<x:Double x:Key="StdFontSize">20 </x:Double>
<Style x:Key="ListText" TargetType="Label" ApplyToDerivedTypes="True">
<Setter Property="TextColor" Value="Black" />
<Setter Property="FontSize" Value="{DynamicResource StdFontSize}" />
</Style>
...
Код Xaml:
<ListView x:Name="locationList"
Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="5"
ItemsSource="{Binding DisplayGroups}"
HasUnevenRows="true"
CachingStrategy="RecycleElement" >
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell Height="{DynamicResource StdRowHeight}"> <!-- Causes a runtime error -->
<StackLayout Orientation="Horizontal">
<Label Text="{Binding Title}"
TextColor="Black"
FontSize="{DynamicResource StdFontSize}" <!-- Works -->
VerticalTextAlignment="Center" />
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
... вызывает эту ошибку времени выполнения:
"Невозможно назначить свойство" Высота ": свойство не существует или не может быть назначено, или несовпадающий тип между значением и свойством"
Я также попробовал этот метод:
<ListView x:Name="locationList"
Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="5"
ItemsSource="{Binding DisplayGroups}"
HasUnevenRows="false"
RowHeight="<DynamicResource Std32RowHeight}" <!-- This row height is an int32 instead of double... -->
CachingStrategy="RecycleElement" >
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout Orientation="Horizontal">
<Label Text="{Binding Title}" TextColor="Black" FontSize="{DynamicResource StdFontSize}"
VerticalTextAlignment="Center"
Margin="20,0,0,0"/>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
... что не имеет никакого эффекта.
Я прочитал много статей / постов / примеров о приложениях для стилизации, но они только меняют размер или цвет шрифта.(Фантастический пример: Размер объектов на основе размеров экрана )
Если вы измените размер шрифта, как вы измените размер строки, чтобы соответствовать?Для дополнительного кредита, как бы вы сделали это для строки сетки?Я баловался с ресурсами GridLength, но также не мог заставить это работать.
Спасибо за помощь!