Как я могу создать набор ToggleButtons, которые ведут себя как RadioButtons? - PullRequest
14 голосов
/ 08 февраля 2011

Я использую C # и 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 Ответ

37 голосов
/ 08 февраля 2011

Если вы хотите, чтобы переключатели, похожие на кнопки переключения, не стали ли переключатели, стилизованные под кнопки переключения, решить вашу проблему?

...