31

有没有办法自动将整个 WPF 应用程序中的所有输入大写?

4

5 回答 5

78

TextBox您可以使用以下属性将所有输入设置为控件:

CharacterCasing="Upper"

要应用于TextBox整个应用程序中的所有控件,请为所有控件创建样式TextBox

<Style TargetType="{x:Type TextBox}">
    <Setter Property="CharacterCasing" Value="Upper"/>
</Style>
于 2009-05-07T18:14:40.523 回答
2

如果您想将单个TextBox而不是所有TextBoxes输入大写,您可以使用以下命令:

<TextBox CharacterCasing="Upper"/>
于 2019-09-20T21:45:29.903 回答
1

我建议创建一个自定义 Textbox 类并覆盖一个事件以自动将文本大写。首先,这取决于您是否希望在输入时或在输入完成后将文本大写。

例如输入完成后

public class AutoCapizalizeTextBox: TextBox
{
  public AutoCapitalizeTextBox()
  {
  }

  public AutoCapitlizeTextBox()
  {
  }

  protected override void OnLostFocus(EventArgs e)
  {
    this.Text = this.Text.ToUpper();

    base.OnLostFocus(e);
  }
}
于 2009-05-07T18:34:31.223 回答
0

我不知道这是否有帮助,它将句子中的所有首字母大写。

http://www.mardymonkey.co.uk/blog/auto-capitalise-a-text-control-in-wpf/

于 2010-02-04T00:45:02.780 回答
0

也许您可以使用转换器。这是转换器的代码:

using System;
using System.Globalization;
using System.Windows.Data;
namespace SistemaContable.GUI.WPF.Converters
{
    public class CapitalizeFirstLetter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value != null)
            {
                string stringToTitleCase = culture.TextInfo.ToTitleCase(value.ToString());
                return stringToTitleCase;
            }
            else
            {
                return null;
            }
        }

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

您需要在“ResourceDictionary”或“App.xaml”中引用它:

<ResourceDictionary xmlns:converters="clr-namespace:SistemaContable.GUI.WPF.Converters">
    <converters:CapitalizeFirstLetter x:Key="CapitalizeFirstLetter"/>
</ResourceDictionary>

你可以像这样使用它:

<TextBox x:Name="txtNombre" Text="{Binding Usuario.Nombre, Converter={StaticResource CapitalizeFirstLetter}, UpdateSourceTrigger=PropertyChanged}"/>
于 2020-09-02T04:57:09.777 回答