I have the following custom control based on the "heavy option" at this link:
public partial class SelectableContentControl : ContentControl
{
    public SelectableContentControl()
    {
        InitializeComponent();
        var isCheckedDesc = DependencyPropertyDescriptor.FromProperty(IsCheckedProperty, typeof(SelectableContentControl));
        isCheckedDesc.AddValueChanged(this, IsCheckedPropertyChanged);
    }
    public bool IsChecked
    {
        get { return (bool)GetValue(IsCheckedProperty); }
        set { SetValue(IsCheckedProperty, value); }
    }
    public static readonly DependencyProperty IsCheckedProperty =
        DependencyProperty.Register("IsChecked", typeof(bool),
          typeof(SelectableContentControl), new PropertyMetadata(false));
    private void IsCheckedPropertyChanged(object sender, EventArgs e)
    {
        var selectable = Content as IAmSelectable;
        if (selectable != null) selectable.IsSelected = IsChecked;
    }
}
The style defined for the SelectableContentControl is as follows:
<Style TargetType="{x:Type controls1:SelectableContentControl}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type controls1:SelectableContentControl}">
                <CheckBox IsChecked="{TemplateBinding IsChecked}"/>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
...and my usage:
<controls:SelectableContentControl Grid.Row="2" Content="{Binding Dummy}" IsChecked="{Binding Dummy.IsChecked, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
I want IsCheckedPropertyChanged to be called whenever the IsChecked value changes on the UI, but this isn't happening.  Anyone see what I'm missing?