我有一个使用
实现Behavior<FrameworkElement>
的课程
protected override void OnAttached()
{
base.OnAttached();
AssociatedObject.AllowDrop = true;
AssociatedObject.DragEnter += AssociatedObject_DragEnter;
AssociatedObject.DragOver += AssociatedObject_DragOver;
AssociatedObject.Drop += AssociatedObject_Drop;
}
在xaml我有
<Border Background="Turquoise">
<Grid Height="800" AllowDrop="True">
<i:Interaction.Behaviors>
<behaviors1:FrameworkElementDropBehavior></behaviors1:FrameworkElementDropBehavior>
</i:Interaction.Behaviors>
...
</Grid>
</Border>
我已在FrameworkElementDropBehavior
中定义Grid
,我希望我可以在此Grid
上删除相同的对象,因为AssociatedObject
应该是整个Grid
}}。但是发生的事情是我只允许放置在有元素定义的Grid的一部分上,例如蓝色,白色或值部分。我使用棱镜将整个green Grid
注入TabControl。任何想法为什么我只能部分放弃?
答案 0 :(得分:1)
只需将Grid
的背景属性设置为Transparent
。
<Grid Height="800" AllowDrop="True" Background="Transparent">
<i:Interaction.Behaviors>
<behaviors1:FrameworkElementDropBehavior/>
</i:Interaction.Behaviors>
</Grid>
这样做,您可以在整个网格区域启用命中测试,包括没有子控件的任何空区域。
答案 1 :(得分:0)
我通过将FrameworkElementDropBehavior
设置为Border
来解决问题。
<Border Background="Turquoise">
<i:Interaction.Behaviors>
<behaviors1:FrameworkElementDropBehavior></behaviors1:FrameworkElementDropBehavior>
</i:Interaction.Behaviors>
<Grid Height="800" AllowDrop="True">
...
</Grid>
</Border>