Как я могу создать набор ToggleButtons, которые ведут себя как RadioButtons?
Я использую С# и WPF, и я в основном хочу иметь некоторые кнопки переключения, и только один из них может быть выбран одновременно.
Я нашел еще один вопрос об этом, но показанное там решение не работает, и я не знаю почему.
Если я попытаюсь сделать это, как указано в вопросе выше, ItemTemplate
ListBox
не применяется. Я просто не получаю переключающие кнопки в списке, вместо этого он отображается как "обычный список".
Стиль кнопки переключения выглядит так, что содержится в одном из моих файлов ресурсов:
<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>
Я хотел бы добавить элементы непосредственно в код XAML, поэтому мой код для этого будет выглядеть примерно как
<ListBox Style="{StaticResource ToggleButtonListBox}">
<ListBoxItem>test1</ListBoxItem>
<ListBoxItem>test2</ListBoxItem>
</ListBox>
Как создать такой набор кнопок?
Ответы
Ответ 1
Если вы хотите, чтобы переключатели, которые выглядели как переключающие кнопки, не будут переключаться на радиокнопки, чтобы выглядеть как кнопки переключения, решите вашу проблему?
<StackPanel>
<RadioButton GroupName="groupFoo" Style="{StaticResource {x:Type ToggleButton}}">Button 1</RadioButton>
<RadioButton GroupName="groupFoo" Style="{StaticResource {x:Type ToggleButton}}">Button 2</RadioButton>
</StackPanel>