龚拖拽:拖拽效果边框不适合元素

时间:2021-02-12 08:37:03

标签: wpf xaml drag-and-drop

使用gong拖放框架,可以得到一个拖拽效果,就是在可能的放置目标周围加上一个简单的边框。

但是,在我的情况下,由于某种原因,此边框不适合实际元素,如下所示: enter image description here

我已经尝试更改放置目标的不同 xaml 元素的背景颜色,以查明某些元素是否更大(但隐藏),但找不到任何元素。

我猜问题是由于使用了我使用的视框,因为这些放置目标的大小是动态的并且可以缩放。

这里是放置目标的xaml代码:

<Border BorderThickness="{Binding PlatformBorderThickness}"  dd:DragDrop.IsDropTarget="True" dd:DragDrop.DropHandler="{StaticResource CustomDropHandler}" >
    <Border.BorderBrush>
        <LinearGradientBrush StartPoint="0,0" EndPoint="1,0" >
            <GradientStop Color="Black" Offset="0"/>
            <GradientStop Color="Black" Offset="0.1"/>
            <GradientStop Color="Transparent" Offset="0.1"/>
            <GradientStop Color="Transparent" Offset="0.9"/>
            <GradientStop Color="Black" Offset="0.9"/>
            <GradientStop Color="Black" Offset="1"/>
        </LinearGradientBrush>
    </Border.BorderBrush>

    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="10*"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
            <RowDefinition Height="10*"/>
        </Grid.RowDefinitions>


        <Viewbox Grid.Column="0" Grid.ColumnSpan="1" Grid.Row="0" Grid.RowSpan="1" HorizontalAlignment="Left">
            <TextBlock Text="{Binding Equipment.Name, FallbackValue='Please add a device!'}" FontWeight="Bold"/>
        </Viewbox>
        <Viewbox Grid.Column="1" Grid.ColumnSpan="1" Grid.Row="0" Grid.RowSpan="1" Stretch="Uniform"  HorizontalAlignment="Right">
            <Button  Command="{Binding DeleteButtonClick}" Background="Transparent" BorderThickness="0"
            Margin="0" Padding="0">
                <Image Source="/Resources/Cancel.ico"/>
            </Button>
        </Viewbox>

        <Viewbox Grid.Column="0" Grid.ColumnSpan="3" Grid.Row="1" Grid.RowSpan="1" HorizontalAlignment="Left" VerticalAlignment="Top" Stretch="Uniform" Margin="2">
        <DataGrid Width="200" Height="135" HeadersVisibility="None" RowBackground="Transparent" BorderThickness="0"
                  ItemsSource="{Binding Equipment.Settings}" SelectionMode="Single" AutoGenerateColumns="False" GridLinesVisibility="Vertical" CanUserAddRows="False"
                  GotFocus="DataGrid_GotFocus" Name="DutInfoGrid" >
            <DataGrid.Resources>
                <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent"/>
                <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Black"/>
                <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent"/>
            </DataGrid.Resources>
            <DataGrid.Background>
                <ImageBrush ImageSource="{Binding Equipment.ImagePath, FallbackValue={StaticResource AddItemImage}, TargetNullValue={StaticResource AddItemImage}}"
                                Stretch="Fill" Opacity="0.25"/>
            </DataGrid.Background>
            <DataGrid.Columns>
                <DataGridTemplateColumn >
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <Button Name="DutInfoGridRemoveButton" Background="Transparent" BorderThickness="0" Margin="0" Padding="0" Height="15"
                                    Command="{Binding Path=DataContext.RemoveClick, RelativeSource= {RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}}"
                                    CommandParameter="{Binding}">
                                <Image Source="/Resources/Trash.ico"/>
                            </Button>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
                <DataGridTextColumn  Binding="{Binding Items[3].Value}"/>
                <DataGridTextColumn  Binding="{Binding Items[6].Value}" />
            </DataGrid.Columns>
        </DataGrid>
        </Viewbox>
    </Grid>
</Border>

编辑:

经过一些进一步的测试,我发现如果我删除数据网格周围的 ViewBox 元素,问题就消失了。任何想法,为什么 ViewBox 会导致此问题以及如何解决?

1 个答案:

答案 0 :(得分:0)

您可能应该切换到操作文件,然后交换并使用 jQuery 和 XML 代码,这些代码将引用拖放操作。