Как связать изображения из Properties.Resources в Xaml? - PullRequest
2 голосов
/ 29 апреля 2011

У меня есть несколько изображений, добавленных к Properties.Resources, где я могу получить к ним доступ, например:

Properties.Resources.LayerIcon;

и хочу использовать его в Xaml, но не знаю, как это сделать.

Я знаю, что существуют разные способы добавления изображений в проект WPF, но мне нужно использовать Properties.Resources, потому что это единственный способ, который я нашел, где изображения отображаются, когда приложение запускается с помощью отражения.

1 Ответ

10 голосов
/ 29 апреля 2011

Изображения в Properties.Resources имеют тип System.Drawing.Bitmap, но WPF использует System.Windows.Media.ImageSource.Вы можете создать конвертер:

[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();
    }
}

и использовать его следующим образом:

<Image Source="{Binding Source={x:Static prop:Resources.LayerIcon}, Converter={StaticResource bitmapToImageSourceConverter}}" />

Убедитесь, что ваш ресурс установлен как открытый, а не внутренний.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...