¿Cómo puedo cambiar dinámicamente una fuente de imagen desde el código subyacente en WPF con una imagen en Propiedades.Recursos?

Tengo una aplicación WPF que necesita proporcionar comentarios al usuario sobre un estado interno. El diseño es tener tres imágenes, llámales rojo, amarillo y verde. Una de estas imágenes se mostrará a la vez, dependiendo del estado. Aquí están los puntos:

Las tres imágenes están en Propiedades. Recursos en el código subyacente.Solo se mostrará una de las imágenes a la vez.El cambio de estado proviene de un proceso en código subyacente y no del usuario.Me gustaría enlazar un control de imagen para poder cambiar la imagen desde el código subyacente.

Supongo que necesitaré un convertidor de imagen para cambiar la imagen JPG a una fuente de imagen como:

[ValueConversion(typeof(System.Drawing.Bitmap), typeof(ImageSource))]
public class BitmapToImageSourceConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        var bmp = value as System.Drawing.Bitmap;
        if (bmp == null)
            return null;
        return System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
                    bmp.GetHbitmap(),
                    IntPtr.Zero,
                    Int32Rect.Empty,
                    BitmapSizeOptions.FromEmptyOptions());
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotSupportedException();
    }
}

Preferiría convertir las imágenes una vez durante la inicialización y mantener una lista de fuentes de imagen. También asumo que necesitaré una propiedad de dependencia para vincular el control, pero no estoy seguro de cómo configurar eso con esta lista de fuentes de imágenes:

    // Dependancy Property for the North Image
    public static readonly DependencyProperty NorthImagePathProperty
        = DependencyProperty.Register(
            "NorthImagePath",
            typeof(ImageSource),
            typeof(MainWindow),
            new PropertyMetadata("**Don't know what goes here!!!**"));

    // Property wrapper for the dependancy property
    public ImageSource NorthImagePath
    {
        get { return (ImageSource)GetValue(NorthImagePathProperty); }
        set { SetValue(NorthImagePathProperty, value); }
    }

Respuestas a la pregunta(1)

Su respuesta a la pregunta