我想使用Label或TextBlock,它将显示一个较低的cased并附加我从资源获得的“:”字符串。 例如:
<Label Content="{x:Static Localization:Captions.Login}" />
其中Captions.Login是字符串“Login”,我视图中的输出应为:“login:”。 我为Label添加了一个模板,它附加了“:”,但我不能在这个模板中小写我的字符串:
<ControlTemplate x:Key="LabelControlTemplate" TargetType="{x:Type Label}">
<Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="True">
<TextBlock>
<Run Text="{TemplateBinding Content}"/>
<Run Text=":"/>
</TextBlock>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
我可以在没有Controltemplate的情况下使用xaml:
<Label Content="{x:Static Localization:Captions.Login}" ContentStringFormat="{}{0}:" />
总而言之,我的问题是如何在这种情况下使用小写功能(注意我不想使用TextBox和restylings来实现这一点)
答案 0 :(得分:0)
使用绑定和转换器怎么样?
<Label Content="{Binding Source="{x:Static Localization:Captions.Login}", Path=., Converter="{StaticResource MyToLowerWithDotConverter}"/>
这样的事情?我没有IDE atm所以我不知道绑定是否正确。
答案 1 :(得分:0)
使用Converter将您的字符串转换为小写。
public class LowerCaseConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return ((string)value).ToLowerInvariant();
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
// unnecessary
throw new NotImplementedException();
}
}