Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 这种关系到底是什么意思_C#_Wpf_Datagridview - Fatal编程技术网

C# 这种关系到底是什么意思

C# 这种关系到底是什么意思,c#,wpf,datagridview,C#,Wpf,Datagridview,我正在做的是,当我选择一行并单击show按钮时,我将拥有一个datagridview,我希望显示图像以及一些信息,我编写了以下代码 public partial class WpfWindow : Window { private UCPersons _ucPersons; public WpfWindow() { InitializeComponent(); // Create WinForms Usercontrol and

我正在做的是,当我选择一行并单击show按钮时,我将拥有一个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);
        }
    }
}
公共部分类WpfWindow:Window
{
私人人士(ucu persons);;
公共WpfWindow()
{
初始化组件();
//创建WinForms用户控件和
//将其添加到WindowsFormsHost
_ucPersons=新ucPersons();
winFormHost.Child=\uUCPersons;
列表人员=CreateSamplePersons();
_ucPersons.SetData(persons);
}
私有列表CreateSamplePersons()
{
列表人员=新列表();
persons.Add(Person.Create(“Dorababu”、“Madhuranagar”、“Hyd”),
DateTime.Now.AddYears(-34),“1”);
persons.Add(Person.Create(“Krish”、“Sat”、“RJY”),
DateTime.Now.AddYears(-64),“2”);
返回人员;
}
私有void b显示详细信息\u单击(对象发送者、路由目标)
{
Person=\u ucPersons.GetSelectedPerson();
if(person!=null)
{
lblName.Content=person.Name;
lblAge.Content=person.birth.ToSortDateString();
Uri=新的Uri(“m_u”+person.ImageRef+”.jpg),
乌里金(亲属);
imgPerson.Source=BitmapFrame.Create(uri);
}
}
}
但如果我把我的图片复制粘贴到垃圾箱外,同样的方法就行不通了


所以我想知道一些关于乌里金的事情,相对的,相对于绝对的。“chicken/pot/pie.jpg”是相对的,因为它是相对于当前目录的。而像“C:/images/food/chicken/pot/pie.jpg”这样的东西是绝对的,因为它是。。。相对于驱动器的根目录

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

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


这意味着它是一个相对URI——但如果您不提供更多信息,我们就不知道它是相对于什么的

例如,此处的URI是相对的:

<img src="person.jpg" />

。。。这也是如此,尽管它在某些方面比前一个“更少”相对,因为它只依赖于现有的host/post/scheme,而不是当前URI的路径:

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

但这是绝对的-它包含所有必需的信息,没有任何其他上下文:

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

从:

绝对Uri的特征是对资源的完整引用(示例:),而相对Uri依赖于先前定义的基本Uri(示例:/index.html)


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

我们需要更多的上下文-您使用此Uri做什么?我正在使用Uri为确切的名称创建引用“确切的名称”是什么意思?听起来相对URI将被解析为相对于您的bin目录。。。如果您使用的是完全相同的代码,但图像不在bin目录中,您希望如何找到它?是的,它只在bin中,但如果是外侧bin,我如何使用该urikind获得它?您需要包括一个相对路径名,例如“./images/person.jpg”。但是,我不确定WPF是否允许您像那样跳出当前目录。您可能需要直接打开文件的流,然后将该流传递给BitmapFrame.Create。