wpf 如何在控件的后台捕获放置事件?

bhmjp9jg  于 2023-06-24  发布在  其他
关注(0)|答案(1)|浏览(103)

我有一堆相同类型的控件在一个屏幕上,并试图实现拖放来改变项目的顺序。
我写的拖放逻辑工作正常,我的问题是我的控件有一堆空白。所有内容都包含在一个边框中,但该区域的50%左右没有填充更多的子控件。
在下图中,笔是我的光标,它显示我可以在图像上拖放。

光标会变成一个笔,用于边框内的每个控件(图像,文本,底部的绿色和红色按钮,以及右上角的橙子点)
在这张图片中,红色的十字是我的光标,它告诉我我不能将它放在边框内的背景上。

光标在任何可以看到背景的地方变成红色十字。
如何确保边框内的整个区域都被视为放置区域?

0h4hbjxa

0h4hbjxa1#

问题是我的自定义控件中确实没有背景。我通过用透明的背景矩形填充边框来修复它:

<local:MyCustomControl
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:MyNamespace.Client"
    x:Class="MyNamespace.Client.Controls.MyCustomControl"
    Margin="2" Padding="0" Height="Auto" Foreground="Black" AllowDrop="True">
    <Grid>
        <Rectangle Grid.Column="0" Grid.Row="0" Width="{Binding Path=ActualWidth, ElementName=border}" Height="{Binding Path=ActualHeight, ElementName=border}" Fill="Transparent"></Rectangle>
        <Border Name="border" BorderThickness="0.5" BorderBrush="LightGray" Grid.Column="0" Grid.Row="0" >
            <!-- content goes here -->
        </Border>
    </Grid>
</local:MyCustomControl>

相关问题