WPF DataTrigger - Einstellung IsSelected ListBoxItem
Habe ich die folgenden Daten-trigger auf die ListBoxItems in meinem Multi-Auswahl-Listenfeld
<DataTrigger Value="True">
<DataTrigger.Binding>
<MultiBinding Converter="{StaticResource DisableWorkItemConverter}">
<Binding ElementName="MainForm" Path="PickedWorkItemID"/>
<Binding Path="Id"/>
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="IsEnabled" Value="False"/>
<Setter Property="IsSelected" Value="False"/>
</DataTrigger>
IsEnabled festgelegt wird, eine Ordnung, aber IsSelected nicht festgelegt. Wie kann ich das beheben?
Ich versucht, aus IsEnabled zu sehen war, wenn es in Konflikt mit IsSelected, aber der Artikel blieb dann ausgewählt, wenn es nicht sein sollte.
Nur zu wiederholen, ich kann Ihnen sagen, die Bindungen und die Konverter funktionieren, weil IsEnabled richtig funktioniert. Aber aus irgendeinem Grund IsSelected nicht un-stellen.
Edit: gerade fiel mir ein, dass ich möglicherweise nicht funktionieren soll, wie IsEnabled. Denn wenn diese trigger falsch, der Eintrag wird wieder aktiviert. Ich würde nicht wollen, dass ein zuvor nicht ausgewählte Zeile in die Auswahl zu schaffen, nur weil dieser trigger ist nicht mehr wahr.
Irgendwelche Ideen? Grundsätzlich habe ich nicht wollen, dass jeder Behinderte Zeilen ausgewählt werden.
Edit 2:
Ich habe versucht, das hinzufügen einer normalen trigger in der Hoffnung, es würde die Kette wieder ab, die Daten, trigger und das hat nicht funktioniert entweder.
<Style.Triggers>
<DataTrigger Value="True">
<DataTrigger.Binding>
<MultiBinding Converter="{StaticResource DisableWorkItemConverter}">
<Binding ElementName="MainForm" Path="PickedWorkItemID"/>
<Binding Path="Id"/>
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="IsEnabled" Value="False"/>
</DataTrigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="IsSelected" Value="False"></Setter>
</Trigger>
</Style.Triggers>
Hmmm, das ist interessant. Verheißt nichts gutes für mich einen Weg zu finden, um die Auswahl zu entfernen. Dank für das schauen hinein.
InformationsquelleAutor Vaccano | 2009-12-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es scheint, dass, sobald die "IsSelected" - Eigenschaft wird festgelegt, ob vom Benutzer oder im code-behind, der setter nicht mehr arbeiten. Ich bin mir nicht sicher, ob es irgendeinen Weg gibt, um das, aber es ist zumindest ein hack, die Arbeit in Ihrem speziellen Fall. Du könntest einen handler registrieren, der für die "IsEnabledChanged" - Ereignis auf dem ListBoxItem und dann überprüfen Sie Ihre Angaben Bedingung, und legen IsSelected in der Prozedur, wenn die Daten es verlangt.
Beispiel:
Die einzige andere Lösung, die ich in der Lage gewesen, zu finden wäre, fügen Sie einige Abhängigkeitseigenschaft zu Ihrem ListBoxItem, registrieren Sie einen ähnliche Methode, um seine "OnPropertyChanged" - Ereignis, und ändern Sie diese Eigenschaft in Ihrem DataTrigger.
Hier ist jemand anderes versuchen, dies zu tun, dass ich nicht in der Lage zu überprüfen, noch.
InformationsquelleAutor Ben Collier