2017-10-20 3 views
-1

Ich habe ein Kontrollkästchen, dessen IsEnabled-Eigenschaft an eine schreibgeschützte Eigenschaft des Datenkontexts gebunden ist. Aber das Ergebnis ist nicht immer wie erwartet. Eigentlich wurde diese Eigenschaft in einem Task (threading) in View-Modell-Konstruktor berechnet. Ich hatte den Eindruck, dass der berechnete Wert irgendwie anders ist, aber nach Inspektion auf Snoop, zeigt es IsEnabled Eigenschaft des Kontrollkästchens auf False und im Datenkontext Registerkarte diese Eigenschaft ist True.WPF-Eigenschaftswert unterscheidet sich von gebundenem Wert

Ich glaube, dass dies auf Threading zurückzuführen ist und wann immer die Ansicht geladen wird, bevor diese Thread-Ausführung abgeschlossen wird, zeigt es einen falschen Wert an.

Früher verwendete ich das für die Bindung

IsEnabled="{Binding IsFeatureAvailable}" 

Später in der Hoffnung, diese zu fixieren, verwende ich diese

aber es gibt keine Veränderung, irgendwelche Vorschläge

I Rahmen bin mit Version 4.5.2 und Caliburn micro für MVVM

+3

Sind Sie die INotifyPropertyChanged-Schnittstelle implementieren? Wie legen Sie die Quelleigenschaft fest? – mm8

+0

Wenn Sie MultiThreading verwenden, sollten Sie den 'Dispatcher' verwenden und die Benachrichtigung im UI-Thread auslösen. Ich hatte dieses Problem mit Benachrichtigungen, die nicht angezeigt wurden, nur weil ich 'OnPropertyChanged' nicht über Dispatcher aufgerufen habe. – XAMlMAX

Antwort

2

Sie sollten t implementieren er INotifyPropertyChanged Schnittstelle und erhöhen die PropertyChanged Ereignis für die IsFeatureAvailable Eigenschaft, wenn es auf einen neuen Wert gesetzt ist:

public class ViewModel : PropertyChangedBase 
{ 
    private _isFeatureAvailable; 
     public bool IsFeatureAvailable 
    { 
     get { return _isFeatureAvailable; } 
     set 
     { 
      _isFeatureAvailable = value; 
      NotifyOfPropertyChange(() => IsFeatureAvailable); 
     } 
    } 
} 
+0

@MegaMind: Bitte denken Sie daran, die Antwort zu akzeptieren, wenn Ihr Problem gelöst wurde: https://stackoverflow.com/help/someone-answers – mm8

Verwandte Themen