对于WPF,我是一个完整的新手,所以请耐心等待我......
我有一个窗口设置,它有两个基本部分 - 左边的一个部分包含用于拖动的按钮,另一部分在右边的按钮将被拖放的位置。
左侧的按钮部分只是一个垂直方向的堆叠面板,右侧的部分是一个画布。
我花了几个小时挖掘各种帖子和花絮的代码,演示了如何在画布上实现拖放按钮,但不幸的是,它并没有像我期望的那样工作。以下是发生的事情。
我可以左键单击按钮部分中的按钮,然后将其拖动到画布部分,但鼠标指针永远不会变成那个小的拖放图标(指示您可以删除当前正在拖动的项目的图标)当我在空白的画布上空盘旋时。 但是,如果我在画布上有一个TextBox(可能是任何其他控件),那么我可以单击并从表单的左侧部分拖动一个按钮到TextBox和鼠标指针 转入小滴图标,表示我可以放下按钮。当我将鼠标悬停在画布的任何空白部分上时,它就不起作用了,这就是我需要能够放下按钮的地方!
这是我的xaml。如果还有其他需要,请告诉我!在此先感谢您的帮助!
<DockPanel Margin="2">
<StackPanel Orientation="Horizontal">
<Border CornerRadius="6" BorderBrush="Gray" Background="LightGray" BorderThickness="2" Padding="8">
<StackPanel Orientation="Vertical">
<Button Name="btnNewNode" Width="100" PreviewMouseLeftButtonDown="btnNewNode_PreviewMouseLeftButtonDown"
PreviewMouseMove="btnNewNode_PreviewMouseMove">
<StackPanel Orientation="Horizontal">
<Image Source="Images/block.png" Height="16" Width="16" />
<TextBlock Margin="5,0,0,0">Node</TextBlock>
</StackPanel>
</Button>
<Separator BorderThickness="1" Margin="4"></Separator>
<Button Width="100">
<StackPanel Orientation="Horizontal">
<Image Source="Images/balloon-box-left.png" Height="16" Width="16" />
<TextBlock Margin="5,0,0,0">Comment</TextBlock>
</StackPanel>
</Button>
</StackPanel>
</Border>
<Border CornerRadius="6" BorderBrush="Gray" Background="LightGray" BorderThickness="2" Padding="8">
<StackPanel Name="stpMain" HorizontalAlignment="Center" Margin="0,0,0,0" VerticalAlignment="Top" Height="675" Width="900">
<Canvas Name="canvasMain" HorizontalAlignment="Left" Height="605" Margin="0,0,0,0" VerticalAlignment="Top" Width="900"
AllowDrop="True" PreviewDragEnter="canvasMain_Dragging" DragEnter="canvasMain_Dragging" PreviewDragOver="canvasMain_Dragging"
DragOver="canvasMain_Dragging" Drop="canvasMain_Drop" PreviewMouseLeftButtonUp="canvasMain_PreviewMouseLeftButtonUp">
<TextBox Text="Test TextBox" Margin="0,150,0,0" />
</Canvas>
</StackPanel>
</Border>
</StackPanel>
</DockPanel>