当谈到 WPF 时,我是一个完整的新手,所以请耐心等待我......
我有一个窗口设置,它有两个基本部分 - 左侧的一个部分包含用于拖动的按钮,而右侧的另一个部分包含将拖放按钮的位置。
左边的按钮部分只是一个垂直方向的堆栈面板,右边的部分是一个画布。
我花了几个小时挖掘各种帖子和代码花絮,演示如何将按钮拖放到画布上,但不幸的是,它并没有像我预期的那样工作。以下是发生的情况。
我可以左键单击按钮部分中的一个按钮,然后将其拖到画布部分,但是当我' m 悬停在空的画布上。但是,如果我在画布上有一个 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>