uwp xaml - 将自定义输入格式设置为文本框

Posted

技术标签:

【中文标题】uwp xaml - 将自定义输入格式设置为文本框【英文标题】:uwp xaml - Set custom input format to textbox 【发布时间】:2018-06-10 18:28:21 【问题描述】:

是否可以(简单地)在文本框上获得特定格式?像这样

所以我有这样的 xaml 代码:

<TextBox Grid.Column="1" PlaceholderText="100" Height="52" Width="80" VerticalAlignment="Center" FontSize="25" />

但我想有一个格式。所以它不能被错误的数据填充。

所以一个输入字段只能是ints,另一个必须是格式00:00所以0是0-9之间的一个整数,然后它必须自动添加:并允许另外两个整数.

这可能吗?如何实现?

【问题讨论】:

这个***.com/questions/32892901/… 告诉你使用棱镜,这里很长但可能会有所帮助:***.com/questions/43268648/mvvm-validation-in-uwp 它不像验证,而是作为一种正则表达式预设(所以如果我开始输入,它会自动填充东西),就像你使用 javascript (codepen.io/tutsplus/pen/PzpoWK) 您可能会为此类事情编写一个行为,尽管您需要的确切输出我不确定它会是什么样子。这是一个数字文本框behaviour 的示例。也许会给你一些启发。 查看 UWP 社区工具包docs.microsoft.com/en-us/windows/uwpcommunitytoolkit/extensions/… 另一种选择是在用户输入第二个数字时自动添加':' 【参考方案1】:

我在 SO 中等待关于 UWP 的好问题,我有一些可能有用的东西 --

XAML

<TextBox Name="MyTextBox" PlaceholderText="00:00" Height="52" Width="80" VerticalAlignment="Center" FontSize="25" MaxLength="5" KeyDown="TextBox_KeyDown" TextChanged="TextBox_TextChanged"/>

C#

bool m_BackPressed = false; // It is because if user pres back button then it will remove ":" sign else it will never removed

private void TextBox_KeyDown(object sender, KeyRoutedEventArgs e)

    m_BackPressed = (e.Key.ToString().Equals("Back")) ? true : false;

    if (e.Key.ToString().Equals("Back"))
    
        e.Handled = false;
        return;
        m_BackPressed = true;
    
    for (int i = 0; i < 10; i++)
    
        if (e.Key.ToString() == string.Format("Number0", i) || e.Key.ToString() == string.Format("NumberPad0", i))
        
            e.Handled = false;
            return;
        
                
    e.Handled = true;
        

private void TextBox_TextChanged(object sender, TextChangedEventArgs e)

    if (MyTextBox.Text.Length == 2 && m_BackPressed != true)
    
        MyTextBox.Text += ":";
        MyTextBox.Select(MyTextBox.Text.Length, 0);                
                

输出

【讨论】:

太棒了!正是我需要的! 是否也可以“限制”数字的数量? (比如假设xx:xx,这是您可以插入的最大字符数? @Robin 看起来你没有复制我的 xaml 代码我已经将字符数限制为 5 inc。那:符号? @Robin 你在 xaml 中获得了 MaxLength 属性吗?

以上是关于uwp xaml - 将自定义输入格式设置为文本框的主要内容,如果未能解决你的问题,请参考以下文章

如何将自定义格式(货币)应用于基于组合框选择的文本框?

将自定义输入视图设置为全局所有文本字段的最简单方法

如何将功能按钮添加到 UWP XAML 中的列表框项

UWP 自定义密码框控件

C# winform 文本框里,怎么设置数字的格式?

UWP 自定义文本框样式