+2  A: 

Since you're overriding the template, you need to attach to the class's properties yourself.

Declare a border in the template in the following fashion:

<Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}"/>

Also, you've got a small bug. You've defined the setter for "BorderBrush" multiple times in your style.

Edit: After seeing your image, here's your real issue:

<Microsoft_Windows_Themes:BulletChrome Background="{TemplateBinding Background}" BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}" IsChecked="{TemplateBinding IsChecked}" IsRound="false" RenderMouseOver="{TemplateBinding IsMouseOver}" RenderPressed="{TemplateBinding IsPressed}"/>

You were missing the BorderThickness in your bullet. It was effectively setting your thickness to 0, which is why you didn't see anything.

Will Eddins
Where do I add that code? I've tried putting in the ControlTemplate, but it doesn't compile. Thank you for your help, Will.
skb
It depends on what you want the border to surround. I would assume inside the ControlTemplate declared in your `RadioButtonCheckBoxStyle`, as Drew Marsh's answer also indicates, but you could try it within your `<BulletDecorator>`.
Will Eddins
See my edit, you're missing `BorderThickness` in your bullet declaration.
Will Eddins
A: 

An image might help here, but where do you expect the border to be? Are you expecting a border around the entire content?? The only border there should be according to the template you're using is around where the check mark will be. If you want a border around all the content then you need to add a Border into the ControlTemplate like so:

            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type RadioButton}">
                        <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
                            <BulletDecorator Background="Transparent">
                                <BulletDecorator.Bullet>
                                    <Microsoft_Windows_Themes:BulletChrome Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" IsChecked="{TemplateBinding IsChecked}" IsRound="false" RenderMouseOver="{TemplateBinding IsMouseOver}" RenderPressed="{TemplateBinding IsPressed}"/>
                                </BulletDecorator.Bullet>
                                <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignme    nt}" RecognizesAccessKey="True"/>
                        </BulletDecorator>
                            <ControlTemplate.Triggers>
                                    <Trigger Property="HasContent" Value="true">
                                    <Setter Property="FocusVisualStyle" Value="{StaticResource CheckRadioFocusVisual}"/>
                                    <Setter Property="Padding" Value="4,0,0,0"/>
                                </Trigger>
                                <Trigger Property="IsEnabled" Value="false">
                                    <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>

Side note: You have set FocusVisualStyle="{x:Null}" on the Checkbox itself, but your template changes this property in its HasContent property trigger. If you really don't want a FocusVisualStyle you should remove that setter.

Drew Marsh
Will Eddins' revised answer is correct, you're missing BorderThickness on the BulletChrome.
Drew Marsh