tl; dr
Установите ItemContainerStyle с ContentPresenter в нем, и убедитесь, что не перезаписывает ItemTemplate.
Необходимость
Вы хотите определить универсальныйстиль для повторного использования.
Вы хотите повторно использовать его с различными типами данных, чтобы иметь возможность использовать DisplayMemberPath или ItemTemplate при повторном использовании - без необходимости переопределять весь стиль.
Проблема
Вы не использовали ContentPresenter для контейнера вашего элемента.
Самому элементу некуда было бы черпать.
Решение
Для вашего конкретного случая
Поместите ContentPresenter внутри RadioButton;это должно работать:
<RadioButton IsChecked="{Binding Path=IsSelected,RelativeSource={RelativeSource TemplatedParent},Mode=TwoWay}"
VerticalAlignment="Center">
<ContentPresenter />
</RadioButton>
В общем
Определить ItemContainerStyle.Это позволяет вам контролировать способ обтекания каждого элемента.
Этот стиль нацелен на ListBoxItem.
Определите шаблон этого стиля, обязательно включив ContentPresenter (где будет отображаться содержимое самого элемента).).
Пример
Определение стиля
<Style TargetType="{x:Type ListBoxItem}" x:Key="BigListBoxItemStyle" BasedOn="{StaticResource DefaultListBoxItemStyle}">
<Setter Property="Foreground" Value="DeepPink" />
<Setter Property="Background" Value="Transparent" />
<Setter Property="Height" Value="71" />
<Setter Property="FontSize" Value="18" />
<Setter Property="BorderThickness" Value="1" />
<Setter Property="BorderBrush" Value="Transparent" />
<Setter Property="Padding" Value="10 5 10 5" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBoxItem}">
<Border Background="{TemplateBinding Background}"
Margin="{TemplateBinding Margin}"
BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="1" />
</Grid.RowDefinitions>
<ContentPresenter Grid.Row="0" Grid.Column="0"
Margin="{TemplateBinding Padding}"
VerticalAlignment="Center" />
<Rectangle x:Name="GraySeparator"
Grid.Row="1"
Height="1" Stroke="Gray" Opacity="0.2"
HorizontalAlignment="Stretch" VerticalAlignment="Bottom" />
</Grid>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="True" >
<Setter Property="Background" Value="Yellow" />
</Trigger>
<Trigger Property="IsMouseOver" Value="True" >
<Setter Property="BorderBrush" Value="DarkGreen" />
<Setter Property="Visibility" Value="Hidden" TargetName="GraySeparator" />
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Opacity" Value=".5" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="BigListBoxStyle" TargetType="{x:Type ListBox}">
<Setter Property="ItemContainerStyle" Value="{StaticResource BigListBoxItemStyle}" />
</Style>
Использование его
<ListBox Style="{StaticResource BigListBoxStyle}"
ItemsSource="{Binding MyTuples}"
DisplayMemberPath="Item2"
SelectedItem="{Binding SelectedTuple}">