Estaba tratando de hacer lo mismo y encontré esta publicación anterior. Permítanme actualizarlo un poco ...
Todd parece ser como muchos otros programadores perezosos, dejando que los chicos de UX hagan todo el trabajo. :) Así que aquí está la solución de Todd con botones de conmutación reales como botones de opción de un grupo:
<RadioButton GroupName="myGroup"
Style="{StaticResource MenuButton}"
Content="One"
IsChecked="True" />
<RadioButton GroupName="myGroup"
Style="{StaticResource MenuButton}"
Content="Two" />
<RadioButton GroupName="myGroup"
Style="{StaticResource MenuButton}"
Content="Three" />
<Style x:Key="MenuButton" TargetType="RadioButton">
<Setter Property="Width" Value="100"/>
<Setter Property="Height" Value="25"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="RadioButton">
<Border BorderBrush="DarkGray" BorderThickness="3" CornerRadius="3" Background="Gray">
<ToggleButton IsChecked="{Binding IsChecked, RelativeSource={RelativeSource TemplatedParent}, Mode=TwoWay}">
<ToggleButton.Content>
<ContentPresenter></ContentPresenter>
</ToggleButton.Content>
</ToggleButton>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Y ahora vas a tener sus efectos de renovación de botón bonitos y todo eso y sólo un botón de activación será capaz de ser " verificado 'a la vez.
Ambos botones de radio y botones de alternar pueden tener tres estados, y también puede enlazar la propiedad 'IsThreeState' del botón de alternar de la misma manera que yo ato 'IsChecked' aquí. Pero por defecto son dos estados.
Además, el enlace de forma larga es importante aquí ya que el atajo {TemplateBinding IsChecked} se establecería de manera predeterminada y necesitamos que estén sincronizados en ambos sentidos.
Este ejemplo, por supuesto, no anima los botones con el cambio de tamaño y todo lo que Todd publicó originalmente, pero sí le proporciona botones regulares que puede distinguir fácilmente como marcados o no.
Los botones de alternancia que estoy usando tienen imágenes y texto, por lo que no puedo usar los botones de opción ni los grupos asociados. –
Puede diseñar el botón de opción para que se vea como lo desee. –
Tendrá que modificar la plantilla de control para el botón de opción para hacer esto. –