WPF Metro设计:如何使用样式应用字符大小写?

4
我正在尝试按照Metro设计原则开发WPF UI - 可以参考Scott Barnes的网站。其中一个Metro的里程碑是字符大小写,可以通过在CSS中使用text-transform属性轻松实现。但是对于WPF控件呢?在资源文件中声明不同的菜单、标题和副标题样式,并通过简单地编辑应用的样式来修改大小写将非常有用。
注意: [1] TextBox.CharacterCasing不适用,它仅涉及手动输入的字符。 [2] 我无法想象出适当的值转换器来完成此任务。
1个回答

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文章以了解可能性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接