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" />
但我想有一个格式。所以它不能被错误的数据填充。
所以一个输入字段只能是int
s,另一个必须是格式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 - 将自定义输入格式设置为文本框的主要内容,如果未能解决你的问题,请参考以下文章