2017-03-22 7 views
0

Ich bin mit einer UWP-App beschäftigt, die eine Gridview als Kategorieseite verwendet. Ich habe einen OnClick-Listener für das Klicken auf eines der Rasterelemente platziert, und es funktioniert. Das Ergebnis ist ein Objekt, das imageURL und imageText enthält.Bestimmte Daten von einem Objekt abrufen C#

Hier beginnt das Problem, ich muss auf das Objekt zugreifen und den Imagetext abrufen, ich habe versucht, es mit verschiedenen Methoden zu konvertieren, aber nichts scheint zu funktionieren.

Hier ist die Ausgabe des angeklickten Elements, die korrekt ist. output of the clicked item

Dies ist derzeit mein letzter Versuch, die einfach passiert „ein Objekt dieser Art kann nicht konvertiert werden“

private void CategoryItem_Click(object sender, ItemClickEventArgs e) 
     { 
      object output = e.ClickedItem; 
      //string[] arr = ((IEnumerable)e.ClickedItem).Cast<object>() 
           //.Select(x => x.ToString()) 
           //.ToArray(); 
     } 
+0

mit var anstelle von Objekt überprüfen –

Antwort

1

Sie die as operator die object ein Wiin.MainPage.MyImage werfen können:

private void CategoryItem_Click(object sender, ItemClickEventArgs e) 
{ 
    MyImage output = e.ClickedItem as MyImage; 
    if (output == null) return; // the clicked item was not of the expected type 
    string text = output.ImageText; 
    string url = output.ImageUrl; 
} 

Ihr Debugger zeigt, dass der object in e.ClickedItem einistBeispiel, also sollte die Besetzung funktionieren.


Bei dem MyImage Typ ist ein Wert Typ (a struct), der as Operator wird nicht funktionieren. Sie würden direkt werfen müssen dann:

MyImage output = (MyImage)e.ClickedItem; 

Aber diese Besetzung wird ein InvalidCastException werfen, wenn e.ClickedItem eine Instanz eines anderen Typs enthält. Sie können den Typ vor dem Gießen unter Verwendung von is:

if (!e.ClickedItem is MyImage) return; 
Verwandte Themen