对于一个项目,我必须显示没有数据绑定的JPG照片,并且不使用源进入XAML文件。为此,我想使用此功能:
private void updatephoto(string urlphoto)
{
photo.Source = new BitmapImage(new Uri(String.Format("{0}", urlphoto), UriKind.Relative));
}
因为我的老师在他的例子中使用它,对他来说它有效! 我的班级是这样的(这是摘录):
class Recette
{
public String photo { get; private set; }
}
使用允许相对路径的字符串的构造函数。使用相对路径在XAML文件中使用Source =“nameoffile.jpg”正常工作但在我的MainWindows.xaml.cs中我想用这个显示照片:
Recette selectedRecette;
void comboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
selectedRecette = (sender as ComboBox).SelectedItem as Recette;
updatephoto(selectedRecette.photo);
}
最后一行称为:
private void updatephoto(string urlphoto)
{
photo.Source = new BitmapImage(new Uri(String.Format("{0}", urlphoto), UriKind.Relative));
}
在XAML中,图像为:
< Image Height="100" Name="photo" HorizontalAlignment="Center"/ >
所以我不明白为什么这不起作用
答案 0 :(得分:0)
你说绝对的道路是有效的,这很棒!您的代码按预期正常 。
您始终可以使用绝对路径,声明:
String path = @"C:\Users\user\Documents\Visual Studio 2013\Projects\projetf - Copie\td6bis\flamby.jpg";
完全有效因为&#34; @&#34;符号。它表示整个字符串是字符串文字,所以&#39; \&#39;角色没有逃避任何事情。
如果你真的需要相对路径,那么路径可能不会指向您认为的路径。关键是所有相对路径都相对于可执行文件的工作目录。这通常是可执行文件所在的文件夹,但有些地方很奇怪。
关于相对路径的快速入门:
如果您的路径只是一个文件名(即&#34; test.jpg&#34;),则该文件需要位于执行目录中。
如果路径看起来像普通路径(即@&#34; Images \ test.jpg&#34;),那么它正在寻找名为&#34; Images&#34;在包含图像文件的执行目录中。
如果你有点,那么它会上升&#34; up&#34;目录树(即@&#34; .. \ Images \ test.jpg&#34;)。这会从执行目录中找到一个目录,查找名为&#34; Images&#34;的文件夹。并在那里查找图像文件。
完全随机的信息;声明String.Format({0}, "MySTring")
与"MySTring"
的作用相同。如果只有一个参数,那么String.Format没有理由,并且该参数是整个字符串。