WPF: associazione di un’etichetta a una proprietà di class

Sto cercando di ottenere il contenuto di un’etichetta per associare alla proprietà stringa di un’istanza di class senza molto successo.

XAML:

   

C #:

 namespace WPFBindingTest { public partial class Window1 : Window { public Foo MyFoo; public Window1() { InitializeComponent(); MyFoo = new Foo(); } private void button1_Click(object sender, RoutedEventArgs e) { MyFoo.W1 = "Hello"; MyFoo.W2 = "Dave"; } } public class Foo { public string W1 { get; set; } public string W2 { get; set; } } } 

cioè quando clicco sul pulsante, imposto le proprietà di MyFoo su “Ciao” e “Dave”, e voglio che ciò si rifletta nelle etichette sull’interfaccia utente. Ho impostato il contenuto come vincolante ma qualcosa non è giusto. Cosa sto facendo di sbagliato qui?

Puoi rendere MyFoo una proprietà di dipendenza e impostare DataContext MyFoo Window1 :

  

Vedi questo articolo per maggiori dettagli.

Rendere MyFoo una proprietà di dipendenza non è obbligatoria. può funzionare solo con una proprietà se si imposta il valore della proprietà prima di assegnare DataContext . (Ma mai con un campo.) Tuttavia se vuoi che le etichette raccolgano i valori mutevoli di W1 e W2 (o non sai / cura se i valori sono impostati prima o dopo l’assegnazione di DataContect ), hai bisogno di Foo per essere un DependencyObject o implementare l’interfaccia INotifyPropertyChanged .

Oppure dai un nome alla tua Finestra: come NameOfWindow e usa un binding ElementName:

 Content="{Binding ElementName=NameOfWindow, Path=MyFoo.W1}" 

Esempio completo XAML: