C# 在两个用户控件之间拖放
我有一个用户控件,其中有一个TreeView控件作为流C# 在两个用户控件之间拖放,c#,wpf,treeview,drag-and-drop,C#,Wpf,Treeview,Drag And Drop,我有一个用户控件,其中有一个TreeView控件作为流 <Grid> <!-- Tree View --> <TreeView Name="devices" ItemsSource="{Binding Entities}" AllowDrop="True"> <TreeView.ItemContainerStyle> <St
<Grid>
<!-- Tree View -->
<TreeView Name="devices"
ItemsSource="{Binding Entities}" AllowDrop="True">
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<EventSetter Event="PreviewMouseLeftButtonDown" Handler="EventPreviewMouseLeftButtonDown"/>
<EventSetter Event="Drop" Handler="EventDrop"/>
<EventSetter Event="DragOver" Handler="EventDragOver"/>
<Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
<Setter Property="FontWeight" Value="Normal" />
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="FontWeight" Value="Bold" />
</Trigger>
</Style.Triggers>
</Style>
</TreeView.ItemContainerStyle>
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Children}">
<StackPanel Orientation="Horizontal">
<Image Width="25" Height="25" Source="{Binding ImagePath}" />
<Button Background="Transparent" BorderBrush="Transparent">
<TextBlock Text="{Binding Name}"/>
</Button>
<StackPanel.ToolTip>
<TextBlock Text="{Binding Description}"/>
</StackPanel.ToolTip>
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
</Grid>
我正在使用主窗口中的此usercontrol作为流
<StackPanel Grid.Column="0" Grid.Row="0" Orientation="Vertical" AllowDrop="False">
<local:DevicesTreeview x:Name="srcDevices" Height="220"/>
<local:DevicesTreeview x:Name="destDevices" Height="220"/>
</StackPanel>
我正在尝试从'srcDevices'拖动一个叶节点,并使用
DragDrop.DoDragDrop。拖航正在启动,但没有触发拖航事件(即拖航器/拖航器/拖航器/降落)。
我怎样才能解决这个问题
Saquia您的堆栈面板上有AllowDrop=“False”,我不知道这是否会阻止您删除其中的项目,但我会将其删除,看看是否会产生影响。此外,您的drop事件位于树状视图项而不是树状视图上,这是您想要的行为吗?或者您想在树状视图中删除,在这种情况下,您的事件处理程序应该在那里
谢谢您的回复
我已经解决了我的问题。首先,我尝试使用流动语句初始化拖放
DataObject dragData=新的DataObject();
DragDrop.DoDragDrop(this.devices、dragData、DragDropEffects.Link)
但现在我使用的是flowing语句,现在所有的拖放事件都被触发
DragDrop.DoDragDrop(this.devices、treevieItem、DragDropEffects.Move)
所以唯一的区别是我发送的第二个参数不同
再次感谢
Saquia+1用于教程链接。这有助于解决问题。