2017-03-22 146 views
0

我忙于使用gridview作为分类页面的UWP应用程序。当点击其中一个网格项时,我已经放置了一个OnClick侦听器,并且它可以工作。结果是一个包含imageURL和imageText的对象。从对象获取特定数据C#

这是问题开始的地方,我需要访问该对象并检索imagetext,我试图使用各种方法转换它,但似乎没有任何工作。

这里是点击项目的输出,这是正确的。 output of the clicked item

这是目前我的最新尝试,它只是通过“这种类型的对象不能转换”

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

使用var而不是对象 –

回答

1

可以使用as operatorobjectWiin.MainPage.MyImage

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

您的调试器显示object in e.ClickedItemis a MyImage实例,所以演员应该工作。


万一MyImage类型是类型(struct),则操作者as将不起作用。你需要直接投则:

MyImage output = (MyImage)e.ClickedItem; 

但如果e.ClickedItem包含不同类型的实例这一投将抛出InvalidCastException。使用is之前可能会检查类型:

if (!e.ClickedItem is MyImage) return;