La habilitación de un botón en WPF dependiendo del ListBox.SelectedIndex
Pregunta
Tengo un lugar clásico de la interfaz de usuario de la situación - dos Listbox llamado SelectedItems
y AvailableItems
- la idea de que los elementos que ya han seleccionado a vivir en SelectedItems
, mientras que los artículos que están disponibles para añadir a SelectedItems
(es decir,cada artículo que no está ya allí) viven en AvailableItems
.
También, tengo la <
y >
botones para mover la selección actual a partir de una lista a la otra (además de la doble clic, que funciona bien).
Es posible que en WPF para crear un estilo/activar para activar o desactivar los botones mover dependiendo de que algo esté seleccionado en ListBox? SelectedItems
es en el lado izquierdo, por lo que el <
botón mover el elemento seleccionado AvailableItems
a esa lista.Sin embargo, si no hay elementos seleccionados (AvailableItems.SelectedIndex == -1
), Quiero que este botón esté desactivado (IsEnabled == false
) - y la otra manera alrededor de la otra lista con los botones/.
Es posible hacer directamente en XAML, o tengo que crear una lógica compleja en el código subyacente para manejarlo?
Solución
Aquí está tu solución.
<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>
Otros consejos
Menos código, solución:
<Button Name="button1" IsEnabled="{Binding ElementName=listBox1, Path=SelectedItems.Count}" />
Si count es 0, que parece el mapa a falso, a > 0 a la verdad.