无法获取Uri的文件路径

时间:2017-09-07 18:47:27

标签: c# wpf list uri

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

  

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

这是代码:

git config --file=/usr/local/Homebrew/.git/config --get homebrew.devcmdrun  <pid>

当我尝试使用一个字符串时,就像这样:

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++;
}

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

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

2 个答案:

答案 0 :(得分:1)

这是因为.ToString()通常返回一个对象的命名空间(除非重写),在本例中是List的命名空间;您需要将实际列表值逐个传递到Uri构造函数。

您需要做的是传递实际路径:

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

答案 1 :(得分:0)

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

这可以解决您的问题:

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 

肖像,让我准确了解您的预期结果,我将添加更多详细信息