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
并将文本更改为uppercase
(selectionstart
是停止选择textbox
去回到 0 导致向后写入 )
你会XAML看起来像这样
<TextBox x:Name="txtTest1"
TextChanged="AnyTextBox_TextChanged"/>
<TextBox x:Name="txtTest2"
TextChanged="AnyTextBox_TextChanged"/>
它并不完全是您希望的转换器,但它会很好地完成这个技巧,并且每个 page
只需要 1 个方法
我有一个文本框,每当用户在其中输入内容时,我都希望文本仅大写。例如,如果我输入 "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
并将文本更改为uppercase
(selectionstart
是停止选择textbox
去回到 0 导致向后写入 )
你会XAML看起来像这样
<TextBox x:Name="txtTest1"
TextChanged="AnyTextBox_TextChanged"/>
<TextBox x:Name="txtTest2"
TextChanged="AnyTextBox_TextChanged"/>
它并不完全是您希望的转换器,但它会很好地完成这个技巧,并且每个 page