【问题标题】:Cannot get the file path for the Uri无法获取 Uri 的文件路径
【发布时间】:2017-09-07 18:47:26
【问题描述】:

在我的 WPF 中,我希望每次用户单击右键时屏幕上的图像都会发生变化。问题是我一直都有相同的错误消息:

'无效的 URI:无法确定 URI 的格式。'

这是代码:

string pic1 = @"C:/Users/Milk/Desktop/exercises/wpf_1/portraits/1.png";
string pic2 = @"C:/Users/Milk/Desktop/exercises/wpf_1/portraits/2.png";

private void buttonRight_Click(object sender, RoutedEventArgs e)
{
     List<string> portraits = new List<string>();
     portraits.Add(pic1);
     portraits.Add(pic2);
     string ShowPicture = portraits[counter % portraits.Count];
     image.Source = new BitmapImage(new Uri(portraits.ToString()));
     counter++;
}

当我尝试只使用一个字符串时,如下所示:

image.Source = new BitmapImage(new Uri(pic1));

它工作正常,但是一旦它在列表中,它就找不到文件路径 - 至少,这对我来说是这样的。

知道如何解决这个问题以及我在哪里出错了吗?

【问题讨论】:

    标签: c# wpf list uri


    【解决方案1】:

    这是因为.ToString() 通常返回一个对象的命名空间(除非被覆盖),在这种情况下是 List 的命名空间;您需要将实际列表值一一传入Uri构造函数。

    你需要做的是这样传递实际路径:

    string ShowPicture = portraits[counter % portraits.Count];
    image.Source = new BitmapImage(new Uri(ShowPicture));
    

    【讨论】:

    • ShowPicture 没有他想要显示的图片的路径,但您的答案是正确的,他正在将其投标到对象列表中,正如您所说,使用 toString() 将返回类似 A929D9933929919 的内容 - -> 对象引用
    【解决方案2】:

    您好,您将其链接到列表 Object 而不是列表中的元素

    这应该可以解决您的问题:

    image.Source = new BitmapImage(new Uri(portraits[0].ToString()));
    

    这将得到 pic1

    如果你想得到 pic2

    你需要写:

    image.Source = new BitmapImage(new Uri(portraits[1].ToString()));
    

    如果你想得到两张图片,你需要添加一个循环

    类似:

    for (int i=0 ; i < portraits.count ; i++) 
    image.Source = new BitmapImage(new Uri(portraits[i].ToString()));
    //..Do the rest 
    

    肖像,让我确切地知道您的预期结果,我将添加更多详细信息

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多