Tengo un grupo de botones que deberían actuar como botones de alternancia, pero también como botones de radio donde solo se puede seleccionar / presionar un botón en un momento actual. También debe tener un estado en el que ninguno de los botones esté seleccionado / presionado.
El comportamiento será una especie de barra de herramientas de Photoshop, donde se selecciona cero o una de las herramientas en cualquier momento.
¿Alguna idea de cómo se puede implementar esto en WPF?
En mi opinión, esta es la forma más sencilla.
¡Disfrutar! - sierra de aguja
fuente
Grid
), use<Grid.Resources> <Style TargetType="RadioButton" BasedOn="{StaticResource {x:Type ToggleButton}}" /> </Grid.Resources>
.<Style BasedOn="{StaticResource {x:Type ToggleButton}}" x:Key="Blubb" TargetType="RadioButton"><Setter Property="Background" Value="Yellow" /></Style>
funciona para mi, disfruta!
fuente
siempre puede usar un evento genérico en el clic del ToggleButton que establece todos los ToggleButton.IsChecked en un control de grupo (Grid, WrapPanel, ...) en falso con la ayuda de VisualTreeHelper; luego vuelva a verificar el remitente. O algo parecido a eso.
fuente
puede poner una cuadrícula con botones de radio y crear un botón como plantilla para botones de radio. que simplemente eliminar programáticamente la verificación si no desea que los botones se alternen
fuente
También puedes probar
System.Windows.Controls.Primitives.ToggleButton
Luego, escriba el código contra la
IsChecked
propiedad para imitar el efecto del botón de radiofuente
ListBoxItem
s.Hice esto para RibbonToggleButtons, pero tal vez sea lo mismo para los ToggleButtons normales.
Vinculé el IsChecked para cada botón a un valor de enumeración de "modo" usando EnumToBooleanConverter desde aquí ¿Cómo vincular RadioButtons a una enumeración? (Especifique el valor de enumeración para este botón mediante ConverterParameter. Debe tener un valor de enumeración para cada botón)
Luego, para evitar desmarcar un botón que ya está marcado, coloque esto en su código detrás del evento Click para cada uno de los RibbonToggleButtons:
fuente
Para ayudar a gente como Julian y yo (hace dos minutos ...). Puede derivar de
RadioButton
esto.Entonces, puedes usarlo como sugirió Uday Kiran ...
Este método permite que solo haya uno
ToggleButton
a laChecked
vez, y también permite UnChecking.fuente
Tomé algunas respuestas y agregué código adicional. Ahora puede tener diferentes grupos de botones de alternancia que actúan como un solo botón de alternancia:
Y los diferentes grupos de botones de radio que parecen botones de alternancia:
fuente