在ListView项中获取泛型类型

时间:2016-07-24 14:02:36

标签: c# wpf

我正在构建一个自定义控件,允许我在控件之间拖放。我正在关注This让我一路走到那里直到我想要允许多种类型。因此,我可能希望在客户表单中使用此功能,并在两个客户ListViewsEmployee表单之间拖动,并在两个员工表单之间拖动。

出于某种原因,我无法投射Type。请解释我出错的地方和原因。谢谢!

    private void OnMouseMove(object sender, MouseEventArgs e)
    {
        Point mousePos = e.GetPosition(null);
        Vector diff = _startPoint - mousePos;
        if (e.LeftButton == MouseButtonState.Pressed &&
            Math.Abs(diff.X) > SystemParameters.MinimumHorizontalDragDistance ||
            Math.Abs(diff.Y) > SystemParameters.MinimumVerticalDragDistance)
        {
            if (ListView != null)
            {
                ListViewItem listViewItem =
                    FindAnchestor<ListViewItem>((DependencyObject) e.OriginalSource);
                Type itemType = ListView.ItemContainerGenerator.ItemFromContainer(listViewItem).GetType();
                var item = (itemType)ListView.ItemContainerGenerator.ItemFromContainer(listViewItem);
            }
        }
    }

1 个答案:

答案 0 :(得分:1)

  

请解释我出错的地方和原因。

您正在尝试静态强制转换为动态确定的类型。

坏消息:这不起作用。必须在编译时知道静态类型。

好消息:完全没有需要来执行此操作:出于您的目的,将引用存储在通用对象变量中就足够了:

object item = ListView.ItemContainerGenerator.ItemFromContainer(listViewItem);