C# Datenbindung aktualisiert nicht WPF
Ich versuche zu tun, ein Data Binding in C# - code-behind-eher als den XAML-Code. Die XAML-binding erstellt, die in Expression Blend 2 in meine CLR-Objekt funktioniert einwandfrei. Mein C# - Implementierung nur aktualisiert, wenn die Anwendung gestartet wird, nachdem die nachfolgenden änderungen an der CLR nicht aktualisieren, mein label Inhalte.
Hier ist die Arbeit XAML-binding.
Zuerst ein ObjectDataProvider ist aus meinem Fenster.Ressourcen.
<ObjectDataProvider x:Key="PhoneServiceDS"
ObjectType="{x:Type kudu:PhoneService}" d:IsDataSource="True"/>
Und die label-Inhalte verbindlich:
<Label x:Name="DisplayName" Content="{Binding
Path=MyAccountService.Accounts[0].DisplayName, Mode=OneWay,
Source={StaticResource PhoneServiceDS}}"/>
Funktioniert Super. Aber wir wollen diesen Satz in C# so können wir unabhängig ändern Sie die XAML - (ie. neue skins). Meine eine mal C# wie folgt:
Binding displayNameBinding = new Binding();
displayNameBinding.Source =
PhoneService.MyAccountService.Accounts[0].DisplayName;
displayNameBinding.Mode = BindingMode.OneWay;
this.DisplayName.SetBinding(Label.ContentProperty, displayNameBinding);
Dies ist in meinem MainWindow nach InitializeComponent();
Jede Einsicht, warum dies funktioniert nur beim Start?
InformationsquelleAutor Jippers | 2008-12-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre C# - version nicht mit der XAML-version. Es sollte möglich sein, schreiben Sie ein code-version der markup, aber ich bin nicht vertraut mit ObjectDataProvider.
Probieren Sie etwas wie dieses:
Die TryFindResource arbeitete mit der ObjectDataSource in XAML deklariert. Ich fand, dass die ODS ist wie eine Instanz, was auch immer Objekt, das ich verwenden möchte, so meine Einstellung verbindliche Quelle zu PhoneService die ich instanziiert bereits auch gearbeitet. Danke!
InformationsquelleAutor devios1
In der priginal-code, den Sie haben, verwirrt die Quelle und den Pfad.
(Ich nehme an, PhoneService ist eine Objekt-Instanz, die sonst vielleicht PhoneService. MyAccountService.Konten[0] sollte die Quelle sein?)
Aus Speicher, übergeben Sie den Pfad als argument an den Konstruktor übergeben.
InformationsquelleAutor Daniel Paull
Schreiben Sie das hinein Geladen-Ereignis anstelle des Konstruktors.
Hoffe, Sie implmented INotifyPropertyChanged ausgelöst, auf die DisplayName-Eigenschaft setter?
InformationsquelleAutor Jobi Joy