当我运行代码时,它将引发无效的参数异常,我该如何解决?

时间:2019-01-08 14:31:06

标签: wpf

所以我决定朝另一个方向前进,那就是将图片名称保存在数据库中,然后将图片复制到应用程序内的文件夹中。

            while (reader.Read())
            { 
                    BitmapImage bitImg = new BitmapImage();
                    string fileName = 
                    System.IO.Path.GetFileName(reader.GetString(12));
                    System.Windows.Controls.Image img = new  
                    System.Windows.Controls.Image();

                    var impath="pack://application:,,,/TravelBuddyApp;component/images/" + fileName;
                    bitImg.UriSource = new Uri(impath, 
                    UriKind.RelativeOrAbsolute);
                    img.Width = 100;
                    img.Height = 100;
                    img.Source = bitImg;
                    StackPanel sp = new StackPanel();
                    sp.Orientation = Orientation.Vertical;
                    sp.Children.Add(img);

                    listviewer.Items.Add(sp);

1 个答案:

答案 0 :(得分:0)

System.Drawing.Image是WinForms。不要在WPF应用程序中使用它。

使用从System.Window.Media.ImageSource派生的类,例如BitmapImage

var bmp = new BitmapImage();

using (var memStm = new MemoryStream(imageBytes))
{
    bmp.BeginInit();
    bmp.StreamSource = memStm;
    bmp.CacheOption = BitmapCacheOption.OnLoad;
    bmp.EndInit();
}

listviewer.Items.Add(bmp);

如果listviewer是一个ListBox或ListView,则ItemTemplate中应该有一个Image元素:

<ListBox x:Name="listviewer">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Image Source="{Binding}"/>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>