使用gong拖放框架,可以得到一个拖拽效果,就是在可能的放置目标周围加上一个简单的边框。
但是,在我的情况下,由于某种原因,此边框不适合实际元素,如下所示:
我已经尝试更改放置目标的不同 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 会导致此问题以及如何解决?
答案 0 :(得分:0)
您可能应该切换到操作文件,然后交换并使用 jQuery 和 XML 代码,这些代码将引用拖放操作。