【问题标题】:How to convert lower case to upper case in WPF by XAML?如何通过 XAML 将 WPF 中的小写字母转换为大写字母?
【发布时间】:2012-12-09 01:16:35
【问题描述】:

我尝试在 WPF 中通过 XAML 将大写转换为小写,如下所示:

<TextBox Height="86" CharacterCasing="Upper"/>

我想用TextBlockLabelButton 实现相同的场景。

我该怎么做?

【问题讨论】:

  • 这不是直接可用于许多控件,您将创建自定义转换器并使用它。
  • ryadavilli,我不知道要创建自定义转换器。请给我你的东西。
  • 为什么问题与标题不匹配?小写 ↔ 大写?

标签: c# wpf xaml textbox lowercase


【解决方案1】:

您应该使用值转换器:

public class ToUpperValueConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        var str = value as string;
        return string.IsNullOrEmpty(str) ? string.Empty : str.ToUpper();
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return null;
    }
}

【讨论】:

【解决方案2】:

一种方法是使用NotifyOnTargetUpdated 并处理TextChanged 事件。

XAML

<TextBlock Name="TB" Text="{Binding Path=YourProperty, NotifyOnTargetUpdated=True}"
               TargetUpdated="TB_TargetUpdated" />

后面的代码

private void TB_TargetUpdated(object sender, DataTransferEventArgs e)
{
   TB.Text = TB.Text.ToUpper();
}

【讨论】:

  • @ChandruA 如果这个答案对你有帮助,请告诉我。
  • 你可以这样做,但它非常具体 - 你需要对每个控件都这样做。正如 David Button 在此页面上提到的那样,最好使用 value converters。它们不仅可重用,而且是 WPF 的做事方式。
【解决方案3】:

看看那个:How to make all text upper case / capital?

更一般地说,每次您想将一个值转换为控件时,请考虑一个转换器并自己编写它(或者如果它已经存在,则使用它)。

您可以在此处找到有关转换器的其他文档:http://wpftutorial.net/ValueConverters.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-04
    • 2015-08-07
    • 2015-07-28
    • 1970-01-01
    • 2013-07-26
    • 1970-01-01
    • 1970-01-01
    • 2011-12-13
    相关资源
    最近更新 更多