【问题标题】:WPF Metro design: How apply character case with Style?WPF Metro 设计:如何在 Style 中应用字符大小写?
【发布时间】:2011-07-18 06:49:36
【问题描述】:
我正在尝试按照 Metro 设计原则在 WPF 中开发用户界面 - 请参阅 Scott Barnes website 以进行出色的调查。
字符大小写是 Metro 的里程碑之一,可以在 css 中使用 text-transform 属性轻松实现。
WPF控件呢?
在资源文件中为菜单、标题、副标题声明各种样式以及通过简单地编辑应用的样式来修改大小写将很有用。
注意:
[1] TextBox.CharacterCasing 不适用,它只涉及手动输入的字符。
[2] 我无法想象适合此任务的值转换器。
【问题讨论】:
标签:
c#
wpf
microsoft-metro
【解决方案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 article 以了解可能的情况。