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