Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使位图对象在组合框中可见_C#_Wpf_Xaml_Combobox - Fatal编程技术网

C# 使位图对象在组合框中可见

C# 使位图对象在组合框中可见,c#,wpf,xaml,combobox,C#,Wpf,Xaml,Combobox,我有一个组合框,它应该显示两个值,一个字符串和一张图片。我有一个添加到组合框中的一些对象的列表。这些对象具有字符串和位图字段。我可以在组合框中显示字符串,但找不到显示位图的方法 有没有办法让显示我的位图 这是我的ComboBox XAML代码,我知道它不起作用,但我想不出其他方法来实现它 <ComboBox x:Name="typeBox" Grid.Column="1" HorizontalAlignment="Left" Margin="10,318,0,0" VerticalAlig

我有一个组合框,它应该显示两个值,一个字符串和一张图片。我有一个添加到组合框中的一些对象的列表。这些对象具有字符串和位图字段。我可以在组合框中显示字符串,但找不到显示位图的方法

有没有办法让
显示我的位图

这是我的ComboBox XAML代码,我知道它不起作用,但我想不出其他方法来实现它

<ComboBox x:Name="typeBox" Grid.Column="1" HorizontalAlignment="Left" Margin="10,318,0,0" VerticalAlignment="Top" Width="300" Height="29">
        <ComboBox.ItemTemplate>
            <DataTemplate>
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition/>
                    </Grid.RowDefinitions>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition></ColumnDefinition>
                        <ColumnDefinition></ColumnDefinition>
                    </Grid.ColumnDefinitions>
                    <TextBlock Text="{Binding name}" Grid.Column="0" Grid.Row="0"/>
                    <Image Width="20" Height="20" HorizontalAlignment="Right" Grid.Row="0" Grid.Column="1" Source="{Binding img}"/>
                </Grid>
            </DataTemplate>
        </ComboBox.ItemTemplate>
    </ComboBox>
C#我的相关资源(类型和礼仪)课程代码:

public NewRes()
{
        pc = new PicChanger();
        InitializeComponent();
        typeBox.DataContext = GlowingEarth.types;
        tagBox.DataContext = GlowingEarth.tags;
        if (GlowingEarth.types.Count > 0)
        {
            foreach (Model.Type t in GlowingEarth.types)
            {
                typeBox.Items.Add(t);
            }
        }
        if (GlowingEarth.tags.Count > 0)
        {
            foreach (Model.Etiquette t in GlowingEarth.tags)
            {
                tagBox.Items.Add(t);
            }
        }
}
public class Type
{
    private string mark;
    public string name { get; set; }
    private string desc;
    private Bitmap img;

    public Type(string m, string n, string d, Bitmap mg)
    {
        mark = m;
        name = n;
        desc = d;
        img = mg;
    }
}

public class Etiquette
{
    private string mark;
    public string colCod { get; set; }
    private string desc;

    public Etiquette(string m, string c, string d)
    {
        mark = m;
        colCod = c;
        desc = d;
    }
}
看看这个

这个答案对你来说已经足够了

看看这个


这个答案对您来说已经足够了

您应该将
系统.Drawing.Bitmap
对象转换为
系统.Windows.Media.Imaging.BitmapImage

…并通过公共属性公开
位图图像


那么您的绑定应该可以工作了。您不能直接绑定到
系统.Drawing.Bitmap

您应该将
系统.Drawing.Bitmap
对象转换为
系统.Windows.Media.Imaging.BitmapImage

…并通过公共属性公开
位图图像


那么您的绑定应该可以工作了。无法直接绑定到
系统。绘图。位图

将检查此问题。非常感谢。投票结果:)将查看此内容。非常感谢。投票赞成:)
public class Type
{
    private string mark;
    public string name { get; set; }
    private string desc;
    private Bitmap bitmap;
    public BitmapImage img { get; set; }

    public Type(string m, string n, string d, Bitmap mg)
    {
        mark = m;
        name = n;
        desc = d;
        bitmap = mg;
        img = Convert(mg);
    }

    private static BitmapImage Convert(Bitmap bitmap)
    {
        BitmapImage bitmapImage;
        using (System.IO.MemoryStream memory = new System.IO.MemoryStream())
        {
            bitmap.Save(memory, System.Drawing.Imaging.ImageFormat.Png);
            memory.Position = 0;
            bitmapImage = new BitmapImage();
            bitmapImage.BeginInit();
            bitmapImage.StreamSource = memory;
            bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
            bitmapImage.EndInit();
        }
        return bitmapImage;
    }
}