2011-02-08 27 views
14

Sto usando C# e WPF e fondamentalmente voglio avere alcuni pulsanti di commutazione e solo uno di essi può essere selezionato contemporaneamente.Come posso creare un set di ToggleButtons che si comportano come RadioButton?

Ho trovato another question a tale proposito, ma la soluzione mostrata non funziona e non so perché.

Se provo a farlo come indicato nella domanda precedente, lo non viene applicato. Semplicemente non ottengo i pulsanti di attivazione nella casella di riepilogo, ma viene visualizzato come una "normale casella di riepilogo".

mio levetta pulsante stile assomiglia a questo, contenuta in uno dei miei file di risorse:

<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> 

vorrei aggiungere gli elementi direttamente nel codice XAML, quindi il mio codice per che sarebbe simile a

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

Come è possibile creare un tale gruppo di pulsanti?

+0

possibile duplicato di [Come ottenere un gruppo di bottoni a commutazione di agire come pulsanti di opzione in WPF?] (Http://stackoverflow.com/questions/2362641/how-to-get-a-group- di-toggle-buttons-to-act-like-radio-buttons-in-wpf) –

risposta

37

Se si desidera che i pulsanti di scelta rapida abbiano l'aspetto di pulsanti di attivazione, i pulsanti di opzione non sembrano essere in grado di risolvere i problemi?

<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ì, penso che in realtà ho risolto il mio problema. Questo è molto più facile di quanto ho provato a farlo. Anche se ci ho pensato un attimo, non potevo immaginare che funzioni così bene e così facilmente. Modificherò la soluzione nella domanda di cui sopra. Molte grazie! –

+1

@ Sören: Questa è una delle più grandi cose di WPF: il comportamento è separato dalla presentazione. Inoltre, sarebbe meglio postare la soluzione come risposta. Dopo un po 'puoi accettarlo come risposta corretta. –

+0

lo so, ho provato ad accettarlo e non ha funzionato ancora (blocco di 3 minuti). Adesso è successo. Grazie ancora! –

Problemi correlati