我正在尝试按照 Metro 设计原则在WPF中开发 UI - 请参阅 Scott Barnes网站以进行出色的调查。
字符大小写是 Metro 的里程碑之一,可以使用text-transform属性在css中轻松实现。
WPF控件呢?
在资源文件中为菜单、标题、副标题声明各种样式,并通过简单地编辑应用的样式来修改大小写是很有用的。
注意:
[1] TextBox.CharacterCasing 不适用,它只涉及手动输入的字符。
[2] 我无法想象适合这项任务的价值转换器。
我正在尝试按照 Metro 设计原则在WPF中开发 UI - 请参阅 Scott Barnes网站以进行出色的调查。
字符大小写是 Metro 的里程碑之一,可以使用text-transform属性在css中轻松实现。
WPF控件呢?
在资源文件中为菜单、标题、副标题声明各种样式,并通过简单地编辑应用的样式来修改大小写是很有用的。
注意:
[1] TextBox.CharacterCasing 不适用,它只涉及手动输入的字符。
[2] 我无法想象适合这项任务的价值转换器。
有几种方法可以解决这个问题。在每个案例的基础上,您可能需要所有大写或小写字符。您可以轻松应用 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 文章以了解可能的情况。