读书人

WPF treeview控件

发布时间: 2013-07-09 09:50:48 作者: rapoo

WPF treeview控件求助

如图
左边是个TREEVIEW,右边是个CANVAS
问题点如下
如何把左边的TreeViewItem拖动到右边的CANVAS内,并把此图片作为背景显示
如何把左边的TreeViewItem绑定另一个控件,例如VLC,也能拖动到右边?
即左边数据绑定数据及事件,右边控件做成一个容器,可以用来切换背景或者播放视频
[解决办法]
网上拖放的例子很多,我也不帮你搜索了,你可以自己找找看。

你这里的问题就是如何处理拖放数据类型而已。
[解决办法]

引用:
我WPF是初学者,主要的问题是事件绑定,因为上面所有的数据都是动态生成的,绑定不太会用
同事技术太高,不屑回答我,哎,牛人脾气大啊


你得说明你的数据源的格式,想绑定成什么样式
[解决办法]


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

读书人网 >C#

热点推荐