Control personalizado de WPF: Enlace de plantilla a imagen

Estoy creando un control personalizado WPF, unButton con unImage yText. He añadido dos propiedades de dependencia al control,ImagePath yText, y la plantilla de control (en Themes \ Generic.xaml) es un panel de pila simple que organiza la imagen y el texto horizontalmente.

losText La propiedad funciona bien. Pero por alguna razón, la imagen de muestra en mi proyecto de prueba no aparece cuando la usoTemplateBinding alImagePath Propiedad de dependencia para obtener su camino. He probado la imagen reemplazando temporalmente laTemplateBinding en el control personalizado con una ruta a la imagen, en cuyo caso aparece.

Espero que alguien con más experiencia en esta área pueda echar un vistazo y decirme por qué el control no funciona como se esperaba. Gracias por tu ayuda.

Mi solución VS 2008 contiene un proyecto, CustomControlDemo. El proyecto contiene un control personalizado, TaskButton.cs, y una ventana principal, Window1.xaml, que uso para probar el control. Mi imagen de prueba, calendar.png, se encuentra en una carpeta de Recursos en el nivel raíz del proyecto, y Generic.xaml se encuentra en una carpeta de Temas, también en el nivel raíz del proyecto.

Aquí está el código para mi control personalizado (de TaskButton.cs):

using System.Windows;
using System.Windows.Controls;

namespace CustomControlDemo
{
    public class TaskButton : RadioButton
    {
        #region Fields

        // Dependency property backing variables
        public static readonly DependencyProperty ImagePathProperty;
        public static readonly DependencyProperty TextProperty;

        #endregion

        #region Constructors

        /// <summary>
        /// Default constructor.
        /// </summary>
        static TaskButton()
        {
            DefaultStyleKeyProperty.OverrideMetadata(typeof(TaskButton), new FrameworkPropertyMetadata(typeof(TaskButton)));

            // Initialize ImagePath dependency properties
            ImagePathProperty = DependencyProperty.Register("ImagePath", typeof(string), typeof(TaskButton), new UIPropertyMetadata(null));
            TextProperty = DependencyProperty.Register("Text", typeof(string), typeof(TaskButton), new UIPropertyMetadata(null));
        }

        #endregion

        #region Dependency Property Wrappers

        /// <summary>
        /// The ImagePath dependency property.
        /// </summary>
        public string ImagePath
        {
            get { return (string)GetValue(ImagePathProperty); }
            set { SetValue(ImagePathProperty, value); }
        }

        /// <summary>
        /// The Text dependency property.
        /// </summary>
        public string Text
        {
            get { return (string)GetValue(TextProperty); }
            set { SetValue(TextProperty, value); }
        }

        #endregion
    }
}

Y aquí está la plantilla de control (de Generic.xaml):

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:CustomControlDemo">


    <Style TargetType="{x:Type local:TaskButton}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type local:TaskButton}">
                    <StackPanel Height="Auto" Orientation="Horizontal">
                        <Image Source="{TemplateBinding ImagePath}"  Width="24" Height="24" Stretch="Fill"/>
                        <TextBlock Text="{TemplateBinding Text}"  HorizontalAlignment="Left" Foreground="{DynamicResource TaskButtonTextBrush}" FontWeight="Bold"  Margin="5,0,0,0" VerticalAlignment="Center" FontSize="12" />
                    </StackPanel>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</ResourceDictionary>

Y finalmente, aquí está el marcado Window1 que estoy usando para probar el control:

<Window x:Class="CustomControlDemo.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:customControl="clr-namespace:CustomControlDemo"
    Title="Window1" Height="300" Width="300">
    <Grid>
        <customControl:TaskButton ImagePath="Resources\calendar.png" Text="Calendar" />
    </Grid>
</Window>

¿Alguna idea de por qué la ruta de la imagen no está funcionando? Gracias de nuevo.