Comment lier une valeur de chaîne simple à une zone de texte?

J’utilise wpf. Je veux lier une zone de texte avec une valeur de type chaîne simple initialisée dans la classe xaml.cs. La TextBox ne montre rien. Voici mon code XAML:

  

Et le code C # est le suivant:

 public partial class EntitiesView : UserControl { private ssortingng _name2; public ssortingng Name2 { get { return _name2; } set { _name2 = "abcdef"; } } public EntitiesView() { InitializeComponent(); } } 

Vous ne définissez jamais la valeur de votre propriété. Définir simplement set { _name2 = "abcdef"; } set { _name2 = "abcdef"; } ne définit pas réellement la valeur de votre propriété tant que vous n’avez pas effectué l’opération définie.

Vous pouvez changer votre code pour qu’il ressemble à ceci pour que cela fonctionne:

 public partial class EntitiesView : UserControl { private ssortingng _name2; public ssortingng Name2 { get { return _name2; } set { _name2 = value; } } public EntitiesView() { Name2 = "abcdef"; DataContext = this; InitializeComponent(); } } 

En outre, comme d’autres personnes l’ont mentionné, si vous souhaitez modifier la valeur de votre propriété ultérieurement et souhaitez que l’interface utilisateur la reflète, vous devez implémenter l’interface INotifyPropertyChanged :

 public partial class EntitiesView : UserControl, INotifyPropertyChanged { private ssortingng _name2; public ssortingng Name2 { get { return _name2; } set { _name2 = value; RaisePropertyChanged("Name2"); } } public EntitiesView() { Name2 = "abcdef"; DataContext = this; InitializeComponent(); } public event PropertyChangedEventHandler PropertyChanged; protected void RaisePropertyChanged(ssortingng propertyName) { var handler = PropertyChanged; if (handler != null) { handler(this, new PropertyChangedEventArgs(propertyName)); } } } 

Ajoutez simplement cette ligne dans votre constructeur EntitiesView

 DataContext = this; 

Pourquoi ne pas append un modèle de vue et y conserver votre propriété?

Voir la classe de modèle

 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.ComponentModel; namespace WpfApplication1 { public class TestViewModel : INotifyPropertyChanged { public ssortingng _name2; public ssortingng Name2 { get { return "_name2"; } set { _name2 = value; OnPropertyChanged(new PropertyChangedEventArgs("Name2")); } } public event PropertyChangedEventHandler PropertyChanged; public void OnPropertyChanged(PropertyChangedEventArgs e) { if (PropertyChanged != null) { PropertyChanged(this, e); } } } } 

Contrôle utilisateur EntitiesView

 public partial class EntitiesView : UserControl { public EntitiesView() { InitializeComponent(); this.DataContext = new TestViewModel(); } }