如何绑定到静态BitmapSource?

时间:2013-02-22 20:00:42

标签: c# wpf xaml wpf-4.5

我想使用标准Windows“错误图标”创建自定义错误/异常对话框。

我按照this question的建议行事。

但是我正在创建一个我绑定的实例属性,就像任何属性一样:

class ErrorWindowViewModel
{
    private readonly ImageSource _errorImage;

    public ImageSource ErrorImage { get { return _errorImage; } }

    public ErrorWindowViewModel()
    {
        _errorImage = Imaging.CreateBitmapSourceFromHIcon(SystemIcons.Error.Handle, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());
    }
}

我想要做的是在我的ErrorWindow类中定义一个静态字段:

partial class ErrorWindow : Window
    {
        private readonly static ImageSource ErrorImage = 
            Imaging.CreateBitmapSourceFromHIcon(SystemIcons.Error.Handle, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());
    }

我无法强制我的XAML引用该字段。

<Image Source="what_to_put_here_to_make_it_work" />

我正在使用WPF 4.5。

1 个答案:

答案 0 :(得分:3)

您必须创建一个静态属性

private static readonly ImageSource errorImage =
    Imaging.CreateBitmapSourceFromHIcon(SystemIcons.Error.Handle, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());

public static ImageSource ErrorImage
{
    get { return errorImage; }
}

并像这样绑定:

<Image Source="{Binding Source={x:Static local:ErrorWindow.ErrorImage}}"/>