【发布时间】:2010-10-24 14:00:34
【问题描述】:
有没有办法自动大写整个 WPF 应用程序中的所有输入?
【问题讨论】:
有没有办法自动大写整个 WPF 应用程序中的所有输入?
【问题讨论】:
也许您可以使用转换器。 这是转换器的代码:
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}"/>
【讨论】:
如果您想将单个TextBox 的输入大写,而不是像above 这样的所有TextBoxes,您可以使用以下命令:
<TextBox CharacterCasing="Upper"/>
【讨论】:
我不知道这是否有帮助,它将句子中的所有首字母大写。
http://www.mardymonkey.co.uk/blog/auto-capitalise-a-text-control-in-wpf/
【讨论】:
您可以使用以下属性将所有输入大小写到 TextBox 控件中:
CharacterCasing="Upper"
要应用于整个应用程序中的所有TextBox 控件,请为所有TextBox 控件创建样式:
<Style TargetType="{x:Type TextBox}">
<Setter Property="CharacterCasing" Value="Upper"/>
</Style>
【讨论】:
我建议创建一个自定义文本框类并覆盖一个事件以自动将文本大写。首先,这取决于您是否希望在输入时或在输入完成后将文本大写。
例如for 输入完成后
public class AutoCapizalizeTextBox: TextBox
{
public AutoCapitalizeTextBox()
{
}
public AutoCapitlizeTextBox()
{
}
protected override void OnLostFocus(EventArgs e)
{
this.Text = this.Text.ToUpper();
base.OnLostFocus(e);
}
}
【讨论】: