Je sais que c'est un problème terriblement commun, mais je ne peux pas obtenir le bouton pour mettre à jour le contenu "Pressed1" et "Pressed2" lors du changement de "Default" de buttonContent. Après avoir examiné quelques questions, je ne peux pas trouver la réponse que je travaillerais pour moi, je ne peux tout simplement pas à trouver ce qui ne va pas ici, voici donc le code merdique:WPF Databinding, la valeur ne sera pas mise à jour
La fenêtre avec un bouton
public partial class MainWindow : Window
{
Code_Behind cB;
public MainWindow()
{
cB = new Code_Behind();
this.DataContext = cB;
InitializeComponent();
}
private void button_Click(object sender, RoutedEventArgs e)
{
cB.buttonPressed();
}
}
Et voici la classe séparée
public class Code_Behind : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private string _buttonContent = "Default";
public string buttonContent
{
get { return _buttonContent; }
set {
if (_buttonContent != value)
{
buttonContent = value;
OnPropertyChanged("buttonContent");
}
}
}
public void buttonPressed()
{
int timesPressed = 0;
if (timesPressed != 1)
{
_buttonContent = "Pressed1";
timesPressed++;
}
else if (timesPressed != 2)
{
_buttonContent = "Pressed2";
timesPressed++;
timesPressed = 0;
}
}
protected void OnPropertyChanged(string name)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
}
}
Ouais, c'est en fait le problème ici, il semble. Eh bien, il n'a jamais expliqué comment exactement les propriétés ont travaillé en premier lieu. Y a-t-il une différence entre la liaison à une instance d'objet de la classe ou directement à la classe? – Zephylir
La liaison "directement à la classe" signifierait la liaison à une propriété de classe (c'est-à-dire statique)? Commencez à lire ici: [Présentation de la liaison de données] (https://msdn.microsoft.com/en-us/library/ms752347 (v = vs.110) .aspx). – Clemens
Et en passant, ce que vous appelez "classe séparée" (appelé 'Code_Behind') est communément appelé un * modèle de vue * dans le modèle architectural MVVM. – Clemens