我想在WPF中显示由流程创建的图像,
例如:我们有一个名为createWPFImage()的方法

Image createWPFImage() { ... }


因此,createWPFImage()的输出是一个Image。
在XAML代码中,如下所示:

<StackPanel.ToolTip>
    <StackPanel Orientation="Horizontal">
        <Image Width="64" Height="64" Margin="0 2 4 0" />
        <TextBlock Text="{Binding Path=Description}" VerticalAlignment="Center" />
    </StackPanel>
</StackPanel.ToolTip>



现在,如何在XAML代码中将createWPFImage()的输出绑定到Image?
如果您能指导我,我将不胜感激。

最佳答案

假设您具有方法“ CreateWpfImage”的类“ MyClass”(请参见下面的示例)。

在您的XAML中,您可以创建MyClass,然后使用“资源”部分中的ObjectDataProvider调用CreateWpfImage(请参阅Bea Stollnitz博客文章ObjectDataProvider)。

XAML

<Window x:Class="MyApplicationNamespace.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:MyApplicationNamespace="clr-namespace:MyApplicationNamespace"
    Title="Window1" Height="300" Width="300">

<Window.Resources>
    <ObjectDataProvider ObjectType="{x:Type MyApplicationNamespace:MyClass}" x:Key="MyClass" />
    <ObjectDataProvider ObjectInstance="{StaticResource MyClass}" MethodName="CreateWpfImpage" x:Key="MyImage" />
</Window.Resources>

<StackPanel>
    <Image Source="{Binding Source={StaticResource MyImage}, Path=Source}"/>
</StackPanel>




示例MyClass代码可创建供XAML使用的图像-

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;

namespace MyApplicationNamespace
{
    public class MyClass
    {
        public Image CreateWpfImpage()
        {
            GeometryDrawing aGeometryDrawing = new GeometryDrawing();
            aGeometryDrawing.Geometry = new EllipseGeometry(new Point(50, 50), 50, 50);
            aGeometryDrawing.Pen = new Pen(Brushes.Red, 10);
            aGeometryDrawing.Brush = Brushes.Blue;
            DrawingImage geometryImage = new DrawingImage(aGeometryDrawing);

            Image anImage = new Image();
            anImage.Source = geometryImage;
            return anImage;
        }
    }
}

10-08 20:28