1

当谈到 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>
4

0 回答 0