【问题标题】:Windows XAML: Replacement for WPF TextBox's CharacterCasingWindows XAML:替换 WPF 文本框的 CharacterCasing
【发布时间】:2015-07-15 07:34:58
【问题描述】:

我有一个文本框,每当用户输入它时,我希望文本只能是大写。例如,如果我输入“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}}"/>

【问题讨论】:

  • “这似乎不起作用”是什么意思?请注意,这不应该是双向的,因为您无法从全大写的字符串中恢复原始字符串。
  • 它没有对文本做任何事情。我对你的最后一句话感到困惑,你能详细说明一下吗?
  • @kennyzx 如果这可以是通用的,我会更喜欢,所以我可以在多个地方使用它,比如转换器。有没有办法做到这一点?我在那个地区有点菜鸟......

标签: c# xaml user-interface windows-store-apps converter


【解决方案1】:

这是我在 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 个方法

【讨论】:

  • 能否把它做得更通用,就像我可以在有参考的地方使用的转换器一样。但是有了这个,我必须为我所做的每一节课都做到这一点。不酷的重复代码...
  • @ARandomGuy 我已经编辑了我的帖子,使您每页只需要一种方法。这是我能做的最好的,因为我不熟悉你想要的转换器。
  • @ARandomGuy 这是一小段代码,如果它是重复的,那根本不重要。当然这并不理想,但不值得为了避免每个表单重复 3 行代码而自责
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-27
  • 1970-01-01
相关资源
最近更新 更多