WPF treeview控件求助 本帖最后由 charmyu 于 2013-04-07 15:10:31 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我WPF是初学者,主要的问题是事件绑定,因为上面所有的数据都是动态生成的,绑定不太会用同事技术太高,不屑回答我,哎,牛人脾气大啊 数据源是TREEVIEWITEM,我现在用样式绑定了一个VLC控件在里面,所以我现在不确定到底按VLC还是TREEVIEWITEM来 /// <summary> /// 记录开始拖动时的坐标 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void treeview_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { _lastMouseDown = e.GetPosition(treeview); } private void treeview_MouseMove(object sender, MouseEventArgs e) { if (e.LeftButton == MouseButtonState.Pressed) { Point currentPosition = e.GetPosition(treeview); //实时坐标 if ((Math.Abs(currentPosition.X - _lastMouseDown.X) > 2.0) || (Math.Abs(currentPosition.Y - _lastMouseDown.Y) > 2.0)) //当节点拖动时的坐标(x/y)大于原坐标(x/y)2.0的距离 { if ((treeview.SelectedItem as TreeViewItem) != null) { //执行拖拽效果 DragDrop.DoDragDrop((treeview.SelectedItem as TreeViewItem), sender, DragDropEffects.Move); } } } } /// <summary> /// 检查目标节点合法性 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void treeview_CheckDropTarget(object sender, DragEventArgs e) { if(自己处理条件) { e.Effects = DragDropEffects.Move; //满足条件 } else { e.Effects = DragDropEffects.None; //不满足条件 } } e.Handled = true; } /// <summary> /// 把源节点保存到目标下 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void treeview_Drop(object sender, DragEventArgs e) { if (e.Source as Canvas!= null) { //具体代码自己改, 这里是保存拖动的数据 Canvas.Children.Add(treeview.SelectItem); } } 判断一个时间为当时年份的第几周、第几季度? Remoting的一个问题 c#怎么做登陆框怎么连接数据库 Response.Write的简单问题 c#中,如何用鼠标拖拽控件大小和位置 很菜的问题!多层继承 虚方法怎么写? 简单问题,关于连接Oracle数据库!!! 新建线程中打开悬浮窗体,无法显示在最顶层(跨线程关闭窗体) 有没有可能得到c#的源码 用VS C#.net 开发,怎样调用其他机器上的com object UDP通讯,还要看它心情 我编了一个Windows服务程序,为什么程序无法启动?
同事技术太高,不屑回答我,哎,牛人脾气大啊
/// 记录开始拖动时的坐标
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void treeview_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
_lastMouseDown = e.GetPosition(treeview);
}
private void treeview_MouseMove(object sender, MouseEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed)
{
Point currentPosition = e.GetPosition(treeview); //实时坐标
if ((Math.Abs(currentPosition.X - _lastMouseDown.X) > 2.0) || (Math.Abs(currentPosition.Y - _lastMouseDown.Y) > 2.0)) //当节点拖动时的坐标(x/y)大于原坐标(x/y)2.0的距离
{
if ((treeview.SelectedItem as TreeViewItem) != null)
{
//执行拖拽效果
DragDrop.DoDragDrop((treeview.SelectedItem as TreeViewItem), sender, DragDropEffects.Move);
}
}
}
}
/// <summary>
/// 检查目标节点合法性
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void treeview_CheckDropTarget(object sender, DragEventArgs e)
{
if(自己处理条件)
{
e.Effects = DragDropEffects.Move; //满足条件
}
else
{
e.Effects = DragDropEffects.None; //不满足条件
} }
e.Handled = true; } /// <summary>
/// 把源节点保存到目标下
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void treeview_Drop(object sender, DragEventArgs e)
{
if (e.Source as Canvas!= null)
{
//具体代码自己改, 这里是保存拖动的数据
Canvas.Children.Add(treeview.SelectItem);
}
}