WPF Metro设计:如何在Style中应用字符大小写?

时间:2011-03-18 15:41:40

标签: c# wpf microsoft-metro

我正在尝试按照Metro设计原则在 WPF 中开发一个用户界面 - 请参阅Scott Barnes website进行一项精彩的调查。
字符大小写是Metro里程碑之一,可以使用 text-transform 属性在 css 中轻松实现。
那么WPF控制呢?
在资源文件中声明菜单,标题,副标题的各种样式,并通过简单编辑应用的样式来修改大小写将非常有用。

注意:
[1] TextBox.CharacterCasing不适用,它只涉及手动输入的字符。
[2]我无法想象这个任务适当的值转换器。

1 个答案:

答案 0 :(得分:0)

有几种方法可以解决这个问题。在每个案例的基础上,您可能需要所有大写或小写字符。您可以轻松应用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 article以查看可能的内容。