Дизайн WPF Metro: как применить регистр символов со стилем?

Я пытаюсь разработать пользовательский интерфейс в WPF, следуя принципам дизайна Metro — см. Скотт Барнс веб-сайт для отличного опроса.
Регистр символов — это одна из вех Metro, которая может быть легко достигнута в css с помощью свойства text-transform.
А как насчет управления WPF?
Было бы полезно объявить различные стили для меню, заголовка, подзаголовка в файле ресурсов и изменить регистр, просто отредактировав примененный стиль.

Примечание:
[1] TextBox.CharacterCasing не применяется, он включает только символы, введенные вручную.
[2] Я не могу представить подходящий преобразователь значений для этой задачи.


person valla    schedule 18.03.2011    source источник


Ответы (1)


Есть пара подходов к этому. В каждом конкретном случае вам могут понадобиться все символы верхнего или нижнего регистра. Вы можете легко применить ValueConverter, который применит логику и вернет значение.

Краткий пример реализации этого типа:

<converters:LowerCase x:Key="toLowerConverter"/>

<ControlTemplate TargetType="CustomControlYouMade">
   <HeaderedContentControl Header="{Binding RelativeSource={RelativeSource AncestorType={x:Type CustomControlYouMade}}, Path=Header, Converter={StaticResource toLowerConverter}}" />
</ControlTemplate>

И логика преобразователя:

public sealed class LowerCase : IValueConverter {
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) {
        var str = value as string;
        return string.IsNullOrEmpty(str) ? string.Empty : str.ToLower();
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) {}
}

Для расширенных параметров типографики, таких как лигатуры, подстрочный/надстрочный индекс, росчерки и т. д., вам понадобится совместимый шрифт OpenType. См. эту статью MSDN, чтобы узнать, что возможно.

person erodewald    schedule 23.05.2012