MVVM模式下实现Listview内部拖放功能
来源:互联网 发布:粉粉折淘宝返利官网 编辑:程序博客网 时间:2024/05/21 22:32
在MVVM模式下实现Listview内部各Item的拖放功能,便于调整各个Item的位置。
需要的组件:Interactivity.dll 和 Interactions.dll
xmlns:Interactivity="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:Interactions="http://schemas.microsoft.com/expression/2010/interactions"
在XAML文件中,设置相应的 DataContext
<ListView ItemsSource="{Binding YourObjectCollection}"> <Interactivity:Interaction.Triggers> <Interactivity:EventTrigger EventName="PreviewMouseLeftButtonDown"> <Interactions:CallMethodAction TargetObject="{Binding}" MethodName="PreviewMouseLeftButtonDownCommand"/> </Interactivity:EventTrigger> <Interactivity:EventTrigger EventName="MouseLeftButtonUp"> <Interactions:CallMethodAction TargetObject="{Binding}" MethodName="MouseLeftButtonUp"/> </Interactivity:EventTrigger> </Interactivity:Interaction.Triggers></ListView>
在 ViewModel中
public void PreviewMouseLeftButtonDownCommand(object sender,MouseButtonEventArgs e) // MouseLeftButtonDown 可能也可以用{ ListView listview = sender as ListView; HitTestResult result = VisualTreeHelper.HitTest(listview, Mouse.GetPosition(listview)); Rectangle rect = result.VisualHit as Rectangle; if (rect != null) { YourObject source = rect.DataContext as YourObject ; }//ObservableCollection<YourObject > YourObjectCollection;}public void MouseLeftButtonUp(object sender, MouseButtonEventArgs e){ ListView listview = sender as ListView; HitTestResult result = VisualTreeHelper.HitTest(listview, Mouse.GetPosition(listview)); Rectangle rect = result.VisualHit as Rectangle; if (rect != null) { YourObject dest = rect.DataContext as YourObject ; } //接下来就可以处理YourObjectCollection 中的 source 与 dest 了 ,source 需要可以引用到}
- MVVM模式下实现Listview内部拖放功能
- ListView之间的拖放功能的实现
- WPF+ListView+Linq+MVVM模式实现分页
- WPF mvvm模式下实现柱状图显示
- 拖放功能的实现
- 拖放功能的实现
- flex实现拖放功能
- Flex拖放功能实现
- WPF拖放功能实现
- WPF拖放功能实现
- WPF拖放功能实现
- WPF拖放功能实现
- QT 实现拖放功能
- WPF拖放功能实现
- WPF+ListView+Linq+MVVM模式实现分页[转]
- 用VB实现拖放功能
- 原生javascript实现拖放功能
- SilverLight4:在MVVM架构下实现模式窗口
- CSS cursor 属性
- Android数据的四种存储方式
- JavaScript 注入攻击
- linux前后台进程切换(转)
- Web 2.0界面设计模式
- MVVM模式下实现Listview内部拖放功能
- js 实现菜单上下显示
- 关于myeclipse无法使用ctrl+shift+f快捷键格式化代码的问题
- Perl 安装及模组安装方法【windows】
- weblogic服务器message信息
- 数据库 sql xml类型 查询及操作
- Java字符串问题Top10
- 一次关于分页语句的改写优化
- 互联网系统架构的演进