2011-02-08 7 views
14

Estoy usando C# y WPF y, básicamente, quiero tener algunos botones de alternar y solo uno de ellos se puede seleccionar al mismo tiempo.¿Cómo puedo crear un conjunto de ToggleButtons que se comporten como RadioButtons?

Encontré another question sobre eso, pero la solución que se muestra no funciona y no sé por qué.

Si trato de hacerlo como se menciona en la pregunta anterior, ItemTemplate del ListBox no se aplica. Simplemente no consigo los botones para alternar en el cuadro de lista, sino que se muestra como un "cuadro de lista normal".

Mi estilo de botón de conmutación se parece a esto, contenida en una de mis archivos de recursos:

<Style x:Key="ToggleButtonListBox" TargetType="{x:Type ListBox}"> 
    <Setter Property="ListBox.ItemTemplate"> 
     <Setter.Value> 
      <DataTemplate> 
       <ToggleButton Content="{Binding}" 
          IsChecked="{Binding IsSelected, Mode=TwoWay, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBoxItem}}}" /> 
      </DataTemplate> 
     </Setter.Value> 
    </Setter> 
    <Setter Property="ListBox.ItemsPanel"> 
     <Setter.Value> 
      <ItemsPanelTemplate> 
       <StackPanel Orientation="Horizontal" /> 
      </ItemsPanelTemplate> 
     </Setter.Value> 
    </Setter> 
    <Setter Property="BorderThickness" Value="0" /> 
</Style> 

me gustaría añadir los artículos directamente en el código XAML, por lo que mi código para que se vería algo como

<ListBox Style="{StaticResource ToggleButtonListBox}"> 
    <ListBoxItem>test1</ListBoxItem> 
    <ListBoxItem>test2</ListBoxItem> 
</ListBox> 

¿Cómo puedo crear ese conjunto de botones?

+0

posible duplicado de [Cómo conseguir un grupo de botones de selección para actuar como botones de radio en WPF?] (Http://stackoverflow.com/questions/2362641/how-to-get-a-group- of-toggle-buttons-to-act-like-radio-buttons-in-wpf) –

Respuesta

37

Si desea botones de radio que parecen botones para alternar, ¿no resolverán su problema los botones de radio diseñados para que parezcan botones de alternar?

<StackPanel> 
    <RadioButton GroupName="groupFoo" Style="{StaticResource {x:Type ToggleButton}}">Button 1</RadioButton> 
    <RadioButton GroupName="groupFoo" Style="{StaticResource {x:Type ToggleButton}}">Button 2</RadioButton> 
</StackPanel> 
+0

Sí, creo que en realidad resolvió mi problema. Esto es mucho más fácil de lo que intenté hacerlo. Aunque lo pensé un momento, no me podía imaginar que funcionara tan bien y así de fácil. Editaré la solución en la pregunta anterior. ¡Muchas gracias! –

+1

@ Sören: Esa es una de las mejores cosas de WPF: el comportamiento es independiente de la presentación. Además, sería mejor publicar la solución como una respuesta. Después de un tiempo, puede aceptarlo como la respuesta correcta. –

+0

lo sé, traté de aceptarlo y aún no funcionaba (bloqueo de 3 minutos). Ahora lo hizo. ¡Gracias de nuevo! –

Cuestiones relacionadas