我的C#代码中 uri 有些问题
这是有效的:
var uri = new Uri("d:/Programozas dotNet/Ugyfel/Ugyfel.ClientWpf/Skins/MainSkin.xaml");
但不幸的是没有这些:
var uri = new Uri("/Skins/MainSkin.xaml", UriKind.Relative);
var uri = new Uri("pack://application:,,,/Skins/MainSkin.xaml");
var uri = new Uri("Ugyfel.ClientWpf;/Skins/MainSkin.xaml", UriKind.Relative);
IOException:找不到资源'skins / mainskin.xaml'。
如何使用绝对的相对 uri?
答案 0 :(得分:7)
这是一个愚蠢的错误。正确的方法是没有前导“/”
var uri = new Uri("Skins/MainSkin.xaml", UriKind.Relative);
感谢您的努力
答案 1 :(得分:4)
相对网址(在WPF或任何其他桌面应用程序中)与Environment.CurrentDirectory相关。通常这是您的exe所在的文件夹,但在VS Unit Testing环境中可能会有所不同。
我假设您的项目中有一个名为“Skins”的文件夹,可能您的exe文件位于“bin \ debug”中。
最简单的方法是将MainSkin.xaml设置为复制到输出目录(在文件属性中),这样您就可以仅使用没有路径的名称来引用它。
答案 2 :(得分:0)
Urikind.Relative
会有意义。例如,在此代码中,它使用位于应用程序的bin文件夹中的图像。
private void btnDisplayDetails_Click(object sender, RoutedEventArgs e)
{
Person person = _ucPersons.GetSelectedPerson();
if (person != null)
{
lblName.Content = person.Name;
lblAge.Content = person.BirthDay.ToShortDateString();
Uri uri = new Uri( "m_" + person.ImageRef + ".jpg",
UriKind.Relative);
imgPerson.Source = BitmapFrame.Create(uri);
}
}
礼貌:What exactly mean by this Urikind.relative
或者,当您已经定义了基本URI时,也会使用它。查看UriKind MSDN link:
绝对URI的特点是完整引用 资源(例如:http://www.contoso.com/index.html),而a 相对Uri依赖于先前定义的基URI(例如: /index.html)。