我有一个 WPF 应用程序需要向用户提供有关内部状态的反馈。设计是有三个图像,分别称为红色、黄色和绿色。根据状态,一次显示其中一张图像。以下是要点:
- 这三个图像位于代码隐藏的 Properties.Resources 中
- 一次只显示一张图像。
- 状态更改来自代码隐藏中的过程,而不是来自用户。
- 我想绑定一个图像控件,以便我可以从代码隐藏中更改图像。
我假设我需要一个图像转换器来将 JPG 图像更改为图像源,例如:
[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();
}
}
我希望在初始化期间转换一次图像并保留图像源列表。我还假设我需要一个依赖属性来将控件绑定到,但我不确定如何使用此图像源列表进行设置:
// 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); }
}