Windows XAML: 替换 WPF TextBox 的 CharacterCasing

Windows XAML: Replacement for WPF TextBox's CharacterCasing

我有一个文本框,每当用户在其中输入内容时,我都希望文本仅大写。例如,如果我输入 "abc",TextBox 和后端绑定中的实际文本应该是 "ABC"。

WPF 中有 CharacterCasing 属性,但我似乎无法在 Windows XAML(或任何你称之为 Windows 8 应用程序的应用程序中找到它).

我尝试制作一个转换器,但似乎没有用:

转换器:

 public class UpperCaseConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, string language)
    {
        return value.ToString().ToUpper();
    }

    public object ConvertBack(object value, Type targetType, object parameter, string language)
    {
        return value.ToString().ToUpper();
    }
}

XAML:

<TextBox Text="{Binding ElementName=uiMainPage, Path=Company, Mode=TwoWay, Converter={StaticResource ToUpper}}"/>

这是我在 VB.Net 中为其编写的代码,但它应该很容易转换为 C#

为您的文本框创建一个 textchanged 事件并调用一个方法将您的 sender 作为 textbox

Private Sub AnyTextBox_TextChanged(sender As Object, e As TextChangedEventArgs) 
    TextBoxToChange = (CType(sender,Textbox))
    TextBoxToChange.Text = TextBoxToChange.Text.ToUpper()
    TextBoxToChange.SelectionStart = TextBoxToChange.Text.Length
End Sub

TextChanged事件采用textbox并将文本更改为uppercaseselectionstart是停止选择textbox去回到 0 导致向后写入 )

你会XAML看起来像这样

<TextBox x:Name="txtTest1"
         TextChanged="AnyTextBox_TextChanged"/>

<TextBox x:Name="txtTest2"
         TextChanged="AnyTextBox_TextChanged"/>

它并不完全是您希望的转换器,但它会很好地完成这个技巧,并且每个 page

只需要 1 个方法