【问题标题】:xamarin forms syncfusion ListView ItemAppearingxamarin 表单同步融合 ListView ItemAppearing
【发布时间】:2020-02-26 23:34:29
【问题描述】:

我使用 syncfusion listview 在 xamarin 表单上创建列表视图

我想在列表视图中使用 ItemAppearing 选项

我在网站上使用了这个示例:https://help.syncfusion.com/cr/cref_files/xamarin/Syncfusion.SfListView.XForms~Syncfusion.ListView.XForms.SfListView.html

这个例子:https://help.syncfusion.com/cr/cref_files/xamarin/Syncfusion.SfListView.XForms~Syncfusion.ListView.XForms.SfListView~ItemAppearing_EV.html#ExampleBookmark

我用这个例子发现了这个问题

ListView.ItemAppearing +=listView_ItemAppearing;

public void listView_ItemAppearing(object sender, Syncfusion.ListView.XForms.ItemAppearingEventArgs e)
        {
           var temp= e.ItemData as IEnumerable<ListViewCall>;
            //temp.ToList();
        }

我将e.ItemData 转换为List&lt;ListViewCall&gt; 并得到null

e.ItemData 有数据,但 var tempnull

为什么会这样?

【问题讨论】:

  • e.ItemData 不是 IEnumerable。它只是您列表中的单个值,而不是所有值
  • 这是一个很好的例子,说明了直接投射和使用 as 关键字投射之间的区别。使用(IEnumerable&lt;ListViewCall&gt;)e.ItemData;,您会收到运行时异常,并且可以更好地了解问题所在,但使用as,如果强制转换无效,您只会得到一个空值,没有例外。
  • 感谢您的回复,但此演员阵容无效!

标签: xamarin xamarin.forms cross-platform syncfusion xamarin.forms-styles


【解决方案1】:

ItemData :当item从绑定的数据源出现时,获取ListViewItem的底层数据对象。

所以e.ItemData 将返回绑定对象。和上面的例子一样,它会返回对象BookInfo

public void listView_ItemAppearing(object sender, Syncfusion.ListView.XForms.ItemAppearingEventArgs e)
    {
       var temp= e.ItemData as BookInfo;           
    }

【讨论】:

    【解决方案2】:
               public void listView_ItemAppearing(object sender, Syncfusion.ListView.XForms.ItemAppearingEventArgs e)
        {
            if (e.ItemData is GroupResult)
            {
                var listViewCalls = (e.ItemData as GroupResult).Items as EnumerableQuery<ListViewCall>;
                foreach (var listViewCall in listViewCalls)
                {
    
                }
            }
            else if (e.ItemData is ListViewCall)
            {
                var listViewCall = e.ItemData as ListViewCall;
    
    
            }
    
    
            // foreach (Object obj in e.ItemData.GetType().GetProperties(System.Reflection.BindingFlags.Public | BindingFlags.Instance))
            // {
            //    string s = (obj as Call).Title;
            //}
    
    
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-05
      • 2018-03-11
      • 2012-07-10
      相关资源
      最近更新 更多