Die Aktivierung einer Schaltfläche in WPF abhängig von ListBox.SelectedIndex
Frage
Ich habe ein eher klassisches UI-situation - zwei Listboxen benannt SelectedItems
und AvailableItems
- die Idee, dass die Elemente, die Sie zuvor markiert haben, Leben in SelectedItems
, während die Elemente, die verfügbar sind, für das hinzufügen zu SelectedItems
(d.h.jedes Element, das nicht bereits in es) Leben AvailableItems
.
Auch habe ich die <
und >
Tasten verschieben Sie die aktuelle Auswahl aus einer Liste in die andere (neben einem Doppelklick, die gut funktioniert).
Ist es möglich in WPF einrichten style/trigger, um aktivieren oder deaktivieren Sie die verschieben-Schaltflächen hängt von nichts ausgewählt wird, die entweder in ListBox? SelectedItems
auf der linken Seite, so dass die <
Taste verschieben Sie das ausgewählte AvailableItems
zu dieser Liste.Jedoch, wenn keine Elemente ausgewählt sind (AvailableItems.SelectedIndex == -1
), Möchte ich diese Schaltfläche deaktiviert werden (IsEnabled == false
) - und Umgekehrt für die andere Liste/ - Taste.
Ist dies möglich, direkt in XAML, oder brauche ich, um erstellen Sie komplexe Logik in der codebehind zu Griff es?
Lösung
Hier ist Ihre Lösung.
<Button Name="btn1" >click me
<Button.Style>
<Style>
<Style.Triggers>
<DataTrigger
Binding ="{Binding ElementName=list1, Path=SelectedIndex}"
Value="-1">
<Setter Property="Button.IsEnabled" Value="false"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
Andere Tipps
Weniger code-Lösung:
<Button Name="button1" IsEnabled="{Binding ElementName=listBox1, Path=SelectedItems.Count}" />
Wenn count 0 ist, scheint Karte false, > 0 zu wahren.