C# uwp xaml-将自定义输入格式设置为textbox

C# uwp xaml-将自定义输入格式设置为textbox,c#,xaml,uwp,C#,Xaml,Uwp,ti是否可以(简单地)在文本框上获取特定格式?像这样 所以我有如下xaml代码: <TextBox Grid.Column="1" PlaceholderText="100" Height="52" Width="80" VerticalAlignment="Center" FontSize="25" /> 但我想有一个格式。所以它不能被错误的数据填充 因此,一个输入字段必须仅为ints,另一个输入字段必须为格式00:00,因此0是0-9之间的int,然后它必须自动添加:,并

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

所以我有如下xaml代码:

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

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

因此,一个输入字段必须仅为
int
s,另一个输入字段必须为格式
00:00
,因此0是0-9之间的int,然后它必须自动添加
,并允许再添加两个int


这可能吗?怎么可能?

我在等待关于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;//这是因为如果用户按下后退按钮,它将删除“:”符号,否则它将永远不会删除
private void TextBox_KeyDown(对象发送器,KeyRoutedEventArgs e)
{
m_BackPressed=(e.Key.ToString().Equals(“Back”))?真:假;
if(例如Key.ToString().Equals(“Back”))
{
e、 已处理=错误;
返回;
m_BackPressed=真;
}
对于(int i=0;i<10;i++)
{
if(e.Key.ToString()==string.Format(“Number{0}”,i)| | e.Key.ToString()==string.Format(“NumberPad{0}”,i))
{
e、 已处理=错误;
返回;
}
}            
e、 已处理=正确;
}        
私有void TextBox\u TextChanged(对象发送者,textchangedventargs e)
{
如果(MyTextBox.Text.Length==2&&m_BackPressed!=true)
{
MyTextBox.Text+=“:”;
MyTextBox.Select(MyTextBox.Text.Length,0);
}            
}
输出


这告诉您使用prism,这里的内容很长,但可能会有所帮助:它不是Validation,而是一种regex预设(因此,如果我开始键入,它会自动填充内容),就像javascript()一样,您可以为这类事情编写行为,虽然你需要的确切输出我不确定它会是什么样子。下面是一个数字文本框的示例。也许它会给你一些启发。查看UWP社区工具包。另一个选项是在用户写入第二个数字时自动添加“:”!正是我需要的!是否也可以“限制”数量?(比如说,
xx:xx
这就是您可以插入的最大字符数?@Robin看起来您没有复制我的xaml代码我已经将字符数限制为5 inc.:Symbol@Robin您在xaml中获得MaxLength属性了吗?
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("Number{0}", i) || e.Key.ToString() == string.Format("NumberPad{0}", 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);                
    }            
}