4

我正在尝试按照 Metro 设计原则在WPF中开发 UI - 请参阅 Scott Barnes网站以进行出色的调查。
字符大小写是 Metro 的里程碑之一,可以使用text-transform属性在css中轻松实现。 WPF控件呢? 在资源文件中为菜单、标题、副标题声明各种样式,并通过简单地编辑应用的样式来修改大小写是很有用的。

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

4

1 回答 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 文章以了解可能的情况。

于 2012-05-23T14:39:33.253 回答