Obtenir la saisie de l’utilisateur à partir d’une zone de texte dans une application WPF

J’essaie d’obtenir les entrées de l’utilisateur à partir de la zone de texte d’une application WPF que je construis. L’utilisateur va entrer une valeur numérique et je voudrais le stocker dans une variable. Je viens de commencer sur C #. Comment puis-je le faire?

Actuellement, j’ouvre la zone de texte et laisse l’utilisateur entrer la valeur. Après cela, l’utilisateur doit appuyer sur un bouton sur lequel le texte de la zone de texte est stocké dans une variable.

private void TextBox_TextChanged(object sender, TextChangedEventArgs e) { } private void Button_Click(object sender, RoutedEventArgs e) { var h = text1.Text; } 

Je sais que ce n’est pas juste. Quelle est la bonne façon?

Comme @Michael McMullin l’a déjà dit, vous devez définir la variable en dehors de votre fonction comme ceci:

 ssortingng str; private void Button_Click(object sender, RoutedEventArgs e) { str = text1.Text; } // somewhere ... DoSomething(str); 

Le point important est que la visibilité de la variable dépend de sa scope. S’il vous plaît jeter un oeil à cette explication .

Eh bien, voici un exemple simple illustrant la procédure à suivre avec MVVM.

Commencez par écrire un modèle de vue:

 public class SimpleViewModel : INotifyPropertyChanged { private int myValue = 0; public int MyValue { get { return this.myValue; } set { this.myValue = value; } } public event PropertyChangedEventHandler PropertyChanged; } 

Ensuite, écrivez un convertisseur pour pouvoir traduire votre chaîne en int et vice-versa:

 [ValueConversion( typeof(int), typeof(ssortingng))] class SimpleConverter:IValueConverter { public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { return value.ToSsortingng(); } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { int returnedValue; if (int.TryParse((ssortingng)value, out returnedValue)) { return returnedValue; } throw new Exception("The text is not a number"); } } 

Ensuite, écrivez votre code XAML comme ceci:

            

Vous pouvez aussi simplement donner un nom à votre contrôle:

  

Et dans le code:

  private void Button_Click(object sender, RoutedEventArgs e) { ssortingng content = Content.Text; } 
 // WPF // Data int number; // Button click event private void Button_Click(object sender, RoutedEventArgs e) { // Try to parse number bool isNumber = int.TryParse(text1.Text, out number); }