我正在构建一个自定义控件,允许我在控件之间拖放。我正在关注This让我一路走到那里直到我想要允许多种类型。因此,我可能希望在客户表单中使用此功能,并在两个客户ListViews
或Employee
表单之间拖动,并在两个员工表单之间拖动。
出于某种原因,我无法投射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);
}
}
}
答案 0 :(得分:1)
请解释我出错的地方和原因。
您正在尝试静态强制转换为动态确定的类型。
坏消息:这不起作用。必须在编译时知道静态类型。
好消息:完全没有需要来执行此操作:出于您的目的,将引用存储在通用对象变量中就足够了:
object item = ListView.ItemContainerGenerator.ItemFromContainer(listViewItem);