Como faço para alterar uma fonte de imagem dinamicamente de code-behind no WPF com uma imagem em Properties.Resources?

Eu tenho um aplicativo WPF que precisa fornecer feedback para o usuário sobre um estado interno. O projeto é ter três imagens, chamá-las de vermelho, amarelo e verde. Uma dessas imagens será exibida por vez, dependendo do estado. Aqui estão os pontos:

As três imagens estão em Properties.Resources no code-behindApenas uma das imagens será mostrada por vez.A mudança de estado vem de um processo em code-behind e não do usuário.Eu gostaria de vincular um controle de imagem para que eu possa alterar a imagem do code-behind.

Suponho que precisarei de um conversor de imagens para alterar a imagem JPG para uma fonte de imagem, 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();
    }
}

Preferiria converter as imagens uma vez durante a inicialização e manter uma lista de origens de imagens. Também estou assumindo que precisarei de uma propriedade de dependência para vincular o controle, mas não tenho certeza de como configurá-lo com essa lista de fontes de imagem:

    // 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); }
    }

questionAnswers(1)

yourAnswerToTheQuestion