Habilitar un botón en WPF dependiendo de ListBox.Índice seleccionado
Tengo una situación de interfaz de usuario bastante clásica - dos ListBoxes llamados SelectedItems
y AvailableItems
- la idea es que los elementos que ya ha seleccionado viven en SelectedItems
, mientras que los elementos que están disponibles para agregar a SelectedItems
(es decir, todos los elementos que no están ya allí) viven en AvailableItems
.
Además, tengo los botones <
y >
para mover la selección actual de una lista a otra (además de hacer doble clic, que funciona bien).
¿Es posible en WPF configurar un estilo / disparador para activar o desactivar los botones de movimiento en función de cualquier cosa que se selecciona en cualquiera de los ListBox? SelectedItems
está en el lado izquierdo, por lo que el botón <
moverá el AvailableItems
seleccionado a esa lista. Sin embargo, si no hay elementos seleccionados (AvailableItems.SelectedIndex == -1
), quiero que este botón esté desactivado (IsEnabled == false
) - y al revés para la otra lista/botón.
¿Es posible hacer esto directamente en XAML, o necesito crear lógica compleja en el código para manejarlo?
2 answers
Aquí está su 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>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-05-31 01:00:35
Menos solución de código:
<Button Name="button1" IsEnabled="{Binding ElementName=listBox1, Path=SelectedItems.Count}" />
Si count es 0 que parece asignar a false, > 0 a true.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-18 11:25:55