2017-12-30 54 views
1

ist es möglich, (einfach) ein spezifisches Format auf Textboxen zu bekommen? Gefällt Ihnen diesesuwp xaml - Setze benutzerdefiniertes Eingabeformat auf Textbox

result

So habe ich XAML-Code wie folgt aus:

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

Aber ich will auf sie ein Format haben. Es kann also nicht mit falschen Daten gefüllt werden.

So ein Eingabefeld hat int s nur zu sein, muss ein anderes Format sein 00:00 So 0 ist ein int von 0-9 und dann Auto hat, um die : hinzufügen und zwei weitere Ints zu ermöglichen.

Ist das möglich und wie?

+0

Dieses https://stackoverflow.com/questions/32892901/windows-10-universal-windows-app-data-validation sagt Ihnen Prisma zu verwenden, dies hier ist langwierig, aber helfen könnten: https://stackoverflow.com/questions/43268648/mvvm-validation-in-uwp –

+0

Es ist nicht als validaton, aber als eine Art Regex-Preset (wenn ich also anfange zu tippen, füllt es automatisch Zeug), wie Sie mit Javascript (https://codepen.io/tutsplus/pen/PzpoWK) – Robin

+0

Sie könnten möglicherweise ein Verhalten für diese Art von Sache schreiben, obwohl die genaue Ausgabe von dem, was Sie brauchen, ich bin mir nicht sicher, wie es aussehen würde. Hier ist ein Beispiel für ein numerisches Textfeld [Verhalten] (http://julmar.com/blog/programming/numerictextboxbehavior-wsa/). Vielleicht wird es dir etwas Inspiration geben. – jsmyth886

Antwort

1

Ich war in SO über UWP für gute Frage warten, und ich habe etwas, das nützlich könnte -

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("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);     
    }    
} 

Ausgang

Output

+1

genial! genau was ich brauche! – Robin

+0

Ist es auch möglich, die Anzahl der Nummern zu "begrenzen"? (sagen wir mal 'xx: xx', also die maximale Anzahl an Zeichen, die Sie einfügen können? – Robin

+0

@Robin sieht so aus, als ob Sie meinen XAML-Code nicht kopiert haben Ich beschränke die Anzahl der Zeichen bereits auf 5 inkl .: Symbol –