/ / ValueConverter wurde beim Start nicht aufgerufen - c #, wpf, Datenbindung, ivalueconverter

ValueConverter nicht beim Start aufgerufen - c #, wpf, Datenbindung, ivalueconverter

Ich habe eine Combobox, die an eine Sammlung gebunden ist. Jedes Element in der Sammlung hat eine Untersammlung, die Elemente enthalten kann oder auch nicht. Ich habe eine zweite Combobox, an die die Subcollection gebunden ist. Und ich möchte nur die zweite Combobox anzeigen (= Visibility.Visible), wenn die Subcollection Items enthält. All das funktioniert. ABER: Wenn ich mein Programm starte, ist das selectedItem der Haupt-Combobox Null (= bisher wurde noch nichts ausgewählt). Dies führt dazu, dass der Konverter nicht aufgerufen wird (das ist nicht der Fall, ich habe einen Haltepunkt auf dem Konverter gesetzt und das Programm stoppt nicht, wenn es gestartet wird).

Ich habe also das Problem, dass ich nicht möchteZeigen Sie die zweite Combobox an, wenn das Programm startet. Kann ich den Aufruf des ValueConverters erzwingen? Ich habe versucht, OnPropertyChanged am Ende des Konstruktors aufzurufen, aber das ändert nichts. Und wenn ich die Combobox im Konstruktor der .xaml.cs auf Visible.Hidden setze, wird es auch nach dem Aufruf der Console nicht angezeigt Wertkonverter heißt: Irgendwelche Ideen?

Antworten:

4 für die Antwort № 1

Stellen Sie a ein FallbackValue für die Bindung:

<SomeUIElement Visibility="{Binding SomeBinding, Converter={StaticResource SomeConverter}, FallbackValue=Hidden}" />

Wenn nichts gebunden ist, können Sie einen Wert festlegen, der anstelle der Bindung verwendet wird.

Der Grund, den Wert in Code-Behind zu ändern Visibility.Hidden Es bleibt die ganze Zeit unsichtbar, weil das Festlegen der Eigenschaft die Bindung, die Sie in dem XAML hinzugefügt haben, explizit entfernt