这个Urikind.relative究竟是什么意思

时间:2011-03-09 06:57:28

标签: c# wpf datagridview

我正在做的是当我选择一行并点击“显示”按钮时,我将有一个数据网格视图我想显示图像以及一些信息,我写了以下代码

public partial class WpfWindow : Window
{
    private UCPersons _ucPersons;

    public WpfWindow()
    {
        InitializeComponent();

        // Create WinForms Usercontrol and 
        // add it to the WindowsFormsHost
        _ucPersons = new UCPersons();
        winFormHost.Child = _ucPersons;

        List<Person> persons = CreateSamplePersons();
        _ucPersons.SetData(persons);


    }

    private List<Person> CreateSamplePersons()
    {
        List<Person> persons = new List<Person>();
        persons.Add(Person.Create("Dorababu", "Madhuranagar", "Hyd", 
            DateTime.Now.AddYears(-34), "1"));

        persons.Add(Person.Create("Krish", "Sat", "RJY",
            DateTime.Now.AddYears(-64), "2"));


        return persons;
    }

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

但是,如果我将我的图像复制并粘贴到Bin中,则同样无效。

所以我想知道关于这个 UriKInd

的一些事情

2 个答案:

答案 0 :(得分:12)

相对,而不是绝对。 “chicken / pot / pie.jpg”是相对的,因为它是当前目录的 relative 。而像“C:/images/food/chicken/pot/pie.jpg”这样的东西将是绝对,因为它......错误...相对于 root 驱动器。

以这种方式初始化Uri的唯一真正意义是当uri格式不正确时避免(或导致)异常;当Uri未预先确定时有用。

MSDN Reference

  

相对URI和绝对URI对其格式有不同的限制。例如,相对URI不需要方案或权限。您在uriKind中指定的值必须与uriString中传递的URI类型相匹配。但是,如果指定了RelativeOrAbsolute,则URI字符串可以是相对的或绝对的。

答案 1 :(得分:10)

这意味着它是一个相对URI - 但如果没有您提供更多信息,我们不知道它的相对性。

例如,这里的URI是相对的:

<img src="person.jpg" />

...这样,虽然它在某种程度上比前一个“相对”更少,因为它只依赖于现有的主机/帖子/方案而不是当前URI的路径:

<img src="/images/person.jpg" />

这是绝对的 - 它包含所有所需的信息,没有任何其他背景:

<img src="http://microsoft.com/images/person.jpg" />

来自UriKind documentation

  

绝对URI的特点是对资源的完整引用(例如:http://www.contoso.com/index.html),而相对Uri依赖于先前定义的基URI(例如:/index.html)。

如果没有更多信息,很难说你遇到了什么问题。