惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

U
Unit 42
罗磊的独立博客
博客园 - 聂微东
T
The Blog of Author Tim Ferriss
博客园 - 司徒正美
Stack Overflow Blog
Stack Overflow Blog
F
Fortinet All Blogs
A
About on SuperTechFans
腾讯CDC
Apple Machine Learning Research
Apple Machine Learning Research
B
Blog RSS Feed
IT之家
IT之家
V
Visual Studio Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
宝玉的分享
宝玉的分享
C
Check Point Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Vercel News
Vercel News
爱范儿
爱范儿
Microsoft Security Blog
Microsoft Security Blog
月光博客
月光博客
T
Tailwind CSS Blog
The Cloudflare Blog
Hugging Face - Blog
Hugging Face - Blog

博客园 - uxinxin

.NET10 中配置Swagger的记录 .NET10中通过appsettings.json配置文件获取信息的几个方法 学习使用Taurus的微服务群在.NET Framework4.8环境下的搭建 .net framework 中Owin 通过启动类 Startup.cs 使用 SignalR B站朝夕教育 【.NET9.0+WPF实战三类流程化业务逻辑控制】学习记录 【八】 B站朝夕教育 【.NET9.0+WPF实战三类流程化业务逻辑控制】学习记录 【七】 B站朝夕教育 【.NET9.0+WPF实战三类流程化业务逻辑控制】学习记录 【六】 B站朝夕教育 【.NET9.0+WPF实战三类流程化业务逻辑控制】学习记录 【五】 B站朝夕教育 【.NET9.0+WPF实战三类流程化业务逻辑控制】学习记录 【四】 B站朝夕教育 【.NET9.0+WPF实战三类流程化业务逻辑控制】学习记录 【三】 B站朝夕教育 【.NET9.0+WPF实战三类流程化业务逻辑控制】学习记录 .NET程序屏蔽一些无效蜘蛛的访问配置 asp.net 动态加载与卸载程序集的尝试(没有成功)欢迎解决的朋友留言告知 Framework 4.6.2下的SignalR使用,以及WPF下同步使用 react 16.8.4版本中的生命周期中的细节 在组件挂在时使用了定时器的处理——尚硅谷React教程(2022加更,B站超火react教程)学习笔记 CYQ.Data的XML操作的一些自己使用记录 IIS URL Rewrite将伪静态配置文件放在web.config外部 ASP.NET Core EF MVC 登录验证 一步步教你用html+div+css+js基于Jquery实现一套数字华容道游戏
B站朝夕教育 【.NET9.0+WPF实战三类流程化业务逻辑控制】学习...
uxinxin · 2024-12-04 · via 博客园 - uxinxin

播放地址:20241120-.NET9.0+WPF实战三类流程化业务逻辑控制-10_哔哩哔哩_bilibili

第6课 使用ViewModel绑定的方式实现拖拽

创建MainViewModel.cs文件

 1     public class MainViewModel
 2     {
 3         public ObservableCollection<string> ProcessList { get; set; } = new ObservableCollection<string>();
 4 
 5         public void ListViewItem_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
 6         {
 7             DragDrop.DoDragDrop((DependencyObject)sender, (sender as ListViewItem).Content, DragDropEffects.Copy);
 8         }
 9 
10         public void ListBox_Drop(object sender, DragEventArgs e)
11         {
12             string value = e.Data.GetData(typeof(string)).ToString();
13             (sender as ListBox).Items.Add(new ListBoxItem() { Content = value });
14         }
15     }

Nuget搜索behaviors安装Microsoft.Xaml.Behaviors.Wpf  版本1.1.135

MainView.xaml文件修改Window节点增加属性:

  xmlns:i="http://schemas.microsoft.com/xaml/behaviors"

然后就可以修改节点ListView下面的ListViewItem增加子节点:

1  <i:Interaction.Triggers>
2      <i:EventTrigger EventName="PreviewMouseLeftButtonDown">
3          <i:CallMethodAction MethodName="ListViewItem_MouseLeftButtonDown" TargetObject="{Binding}" />
4      </i:EventTrigger>
5  </i:Interaction.Triggers>

然后修改ListBox节点下面新增子节点

            <i:Interaction.Triggers>
                <i:EventTrigger EventName="Drop">
                    <i:CallMethodAction MethodName="ListBox_Drop" TargetObject="{Binding}" />
                </i:EventTrigger>
            </i:Interaction.Triggers>

最终MainView.xaml文件中代码如下:

 1 <Window x:Class="WpfApp1.MainView"
 2         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 3         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 4         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
 5         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
 6         xmlns:local="clr-namespace:WpfApp1" xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
 7         mc:Ignorable="d"
 8         WindowStartupLocation="CenterScreen"
 9         Background="White"
10         Title="MainView" Height="650" Width="1300">
11     <Grid>
12         <Grid.ColumnDefinitions>
13             <ColumnDefinition Width="200" />
14             <ColumnDefinition Width="300" />
15             <ColumnDefinition />           
16         </Grid.ColumnDefinitions>
17         <ListView>
18             <ListViewItem Content="AAA">
19                 <i:Interaction.Triggers>
20                     <i:EventTrigger EventName="PreviewMouseLeftButtonDown">
21                         <i:CallMethodAction MethodName="ListViewItem_MouseLeftButtonDown" TargetObject="{Binding}" />
22                     </i:EventTrigger>
23                 </i:Interaction.Triggers>
24             </ListViewItem>
25             <ListViewItem Content="BBB"></ListViewItem>
26             <ListViewItem Content="CCC"></ListViewItem>
27             <ListViewItem Content="DDD"></ListViewItem>
28         </ListView>
29         <ListBox Grid.Column="1" AllowDrop="True" ItemsSource="{Binding ProcessList}">
30             <i:Interaction.Triggers>
31                 <i:EventTrigger EventName="Drop">
32                     <i:CallMethodAction MethodName="ListBox_Drop" TargetObject="{Binding}" />
33                 </i:EventTrigger>
34             </i:Interaction.Triggers>
35         </ListBox>
36     </Grid>
37 </Window>

运行测试拖拽功能基本上还可以操作,最终松开鼠标时会有报错