2011-03-09 2 views
8

Quello che sto facendo è che avrò una vista datagrid quando seleziono una riga e clicco sul pulsante show Vorrei visualizzare l'immagine insieme ad alcune informazioni per cui ho scritto il seguente codiceCosa significa esattamente con questo Urikind.relative

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

Ma lo stesso non funziona se copio e incollo le mie immagini da Bin.

quindi vorrei sapere qualche cosa su questo UriKInd

+1

Abbiamo bisogno di più contesto - cosa stai * facendo * con questo Uri? –

+0

Sto creando il riferimento per il nome esatto usando Uri – Dotnet

+0

Cosa intendi con "per il nome esatto"? Sembra che gli URI relativi verranno risolti rispetto alla directory bin ... se stai usando lo stesso identico codice ma l'immagine non si trova nella directory bin, come ti aspetti che venga trovata? –

risposta

12

relativa, al contrario di Assoluto. "chicken/pot/pie.jpg" sarebbe relativo, perché è relativo alla directory corrente. Mentre qualcosa come "C: /images/food/chicken/pot/pie.jpg" sarebbe assoluto perché è ... err ... relativo alla radice dell'unità.

L'unico vero punto per inizializzare l'Uri in questo modo è evitare (o causare) eccezioni quando l'uri non è ben formato; utile quando l'Uri non è predeterminato.

MSDN Reference

URI relativi e assoluti hanno diverse restrizioni al loro formato. Ad esempio, un URI relativo non richiede uno schema o un'autorità. Il valore specificato in uriKind deve corrispondere al tipo di URI passato in uriString. Tuttavia, se viene specificato RelativeOrAbsolute, la stringa URI può essere relativa o assoluta.

10

Significa che è un URI relativo, ma non sappiamo a che cosa si riferisca senza fornire ulteriori informazioni.

A titolo di esempio, l'URI qui è relativo:

<img src="person.jpg" /> 

... e così è questo, anche se è in qualche modo "meno" rispetto a quella precedente, in quanto si basa solo sul già esistente host/posta/sistema piuttosto che l'attuale percorso del URI:

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

Questa è assoluto anche se - contiene tutte le informazioni richieste, senza alcun altro contesto:

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

Dal UriKind documentation:

assoluto URI sono caratterizzati da un riferimento completo alla risorsa (esempio: http://www.contoso.com/index.html), mentre un parente Uri dipende da una base precedentemente definito URI (esempio: /index.html).

È difficile dire che problema si sta avendo senza ulteriori informazioni però.