を使用して、チェックされているDataTrigger
スタイルに基づいてスタイルを設定してみませんか?RadioButton
<Style x:Key="MyListViewStyle" TargetType="{x:Type ListView}">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=RadioButton1, Path=IsChecked}" Value="True">
<!-- Your Style Setters here -->
<Setter PropertyName="ItemTemplate" Value="{StaticResource ItemTemplate1}" />
</DataTrigger>
<DataTrigger Binding="{Binding ElementName=RadioButton2, Path=IsChecked}" Value="True">
<!-- Your Style Setters here -->
<Setter PropertyName="ItemTemplate" Value="{StaticResource ItemTemplate2}" />
</DataTrigger>
</Style.Triggers>
</Style>
ListBox
とはいえ、 a を のリストとして表示するスタイルを設定するのは非常に簡単ですRadioButtons
。でアイテムのリストを表示しRadioButtons
たいが、それでもListBox
選択動作を維持したい場合に、これを頻繁に行います。
<Style x:Key="RadioButtonListBoxStyle" TargetType="{x:Type ListBox}">
<Setter Property="BorderBrush" Value="Transparent"/>
<Setter Property="KeyboardNavigation.DirectionalNavigation" Value="Cycle" />
<Setter Property="ItemContainerStyle">
<Setter.Value>
<Style TargetType="{x:Type ListBoxItem}" >
<Setter Property="Margin" Value="2, 2, 2, 0" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Border Background="Transparent">
<RadioButton
Content="{TemplateBinding ContentPresenter.Content}" VerticalAlignment="Center"
IsChecked="{Binding Path=IsSelected,RelativeSource={RelativeSource TemplatedParent},Mode=TwoWay}"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Setter.Value>
</Setter>
</Style>
使用例:
<ListBox ItemsSource="{Binding MyOptions}"
SelectedItem="{Binding SelectedOption}"
Style="{StaticResource RadioButtonListBoxStyle}" />