MultiBinding mit MultiValueConverter nicht aktualisiert
es scheint, ich habe ein problem mit meinem multibinding.
Szenario:
Ich habe ein Fenster mit zwei datepickers und ein listview.
Die listliew enthält einige Daten gebundenen Elemente als "Einträge". Ein Eintrag hat eine Eigenschaft namens "Datum".
Ich will nur mein listview zu zeigen, Einträge, deren Datum zwischen meinen zwei datepickes Termine.
Meiner xaml-code für die Bindung der listview die Einträge und Termine:
<ListView.ItemsSource>
<MultiBinding Converter="{StaticResource EntriesFilterConv}"
UpdateSourceTrigger="PropertyChanged">
<Binding Path="Entries" UpdateSourceTrigger="PropertyChanged"/>
<Binding ElementName="EntryFromDate" Path="SelectedDate"
UpdateSourceTrigger="PropertyChanged"/>
<Binding ElementName="EntryToDate" Path="SelectedDate"
UpdateSourceTrigger="PropertyChanged"/>
</MultiBinding>
</ListView.ItemsSource>
Aber dies funktioniert nicht. Mein Konverter wird aufgerufen, wenn ein SelectedDate änderungen, aber nie aufgerufen, wenn Eingaben oder änderungen.
Mit normaler Datenbindung wie diese:
<ListView ItemsSource="{Binding Entries}">
...
</ListView>
Listview-updates in der Regel.
Irgendeine Idee?
- Würde ich entfernen Sie alle UpdateSourceTriggers, sollten Sie überflüssig sein, weil die
ListView
nicht verändern Sie diese Eigenschaften, damit die Quellen nicht aktualisiert werden sowieso. - Danke, aber das hat nicht geholfen.
- Ich weiß, das ist, warum ich es gepostet als Kommentar.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Denke ich kann Folgendes bewirkt werden: Wenn Sie binden direkt an die
Entries
ListView hörenCollectionChanged
Veranstaltungen, aber wenn solch eine Bindung ist in einemMultiBinding
das einzige, was dazu führen würde, dass eine Neubewertung könnte einePropertyChanged
Benachrichtigung, die möglicherweise nicht für die Einträge, die Eigenschaft in Ihrem Modell.Vielleicht können Sie abonnieren
CollectionChanged
event deiner Sammlung und heben einenPropertyChanged
Veranstaltung oder Holen Sie sich dieBindingExpression
innerhalb IhrerMultiBinding
zu nennen, ein update manuell.this
?Entries
definiert? Werfen Sie auch einen Blick auf die INotifyPropertyChanged-Dokumentation, wenn Sie nicht vertraut sind mit: msdn.microsoft.com/en-us/library/...ViewModelCollection<T>
was erbt vonIList<T>
,INotifyCollectionChanged
undINotifyPropertyChanged
. In diesem FallEntries
ist einViewModelCollection<EntryViewModel>
. Abonniere ich denCollectionChanged
in meiner Klasse?Binding.IndexerName
dann.Nach der Suche nach Stunden, ich finde, eine einfache und anständige Antwort !
Da die ObservableCollection nicht erhöhen PropertyChanged-Ereignis, aber CollectionChanged, wir müssen nur binden der Sammlung Zählen, um das Ereignis ausgelöst, wenn die Liste der änderungen :
Original-infos über das perfekt funktionierende multibinding hier : https://stackoverflow.com/a/10884002/817504