Não consigo descobrir por que a linha horizontal cinza não aparece ao arrastar itens para ListBox. Existe algum truque aqui?
<Window x:Class="EmptyListBoxWithDragAndDrop.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:gong="clr-namespace:GongSolutions.Wpf.DragDrop;assembly=GongSolutions.Wpf.DragDrop"
Title="MainWindow" Height="600" Width="800" WindowStartupLocation="CenterScreen">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<ListBox Grid.Column="0" ItemsSource="{Binding Source}"
gong:DragDrop.IsDragSource="True" gong:DragDrop.UseDefaultEffectDataTemplate="True"/>
<ListBox Grid.Column="1" ItemsSource="{Binding Target}"
gong:DragDrop.IsDropTarget="True" gong:DragDrop.DropHandler="{Binding}">
<ListBox.Style>
<Style TargetType="ListBox" BasedOn="{StaticResource {x:Type ListBox}}">
<Style.Triggers>
<Trigger Property="HasItems" Value="False">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<TextBlock Text="Drag items from left ListBox" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</ListBox.Style>
</ListBox>
</Grid>
</Window>
Eu até removo o estilo do gatilho, mas não funciona, nenhuma linha horizontal é mostrada.
Esta é a linha da qual estou falando:
@JobaDiniz Se um ItemsControl estiver vazio, nenhum DropTargetInsertionAdorner será mostrado.
Mas não está vazio, aqui está a amostra .
@JobaDiniz :
public void DragOver(IDropInfo dropInfo)
{
// you must say which adorner you want if you implement the IDropTarget interface
dropInfo.DropTargetAdorner = DropTargetAdorners.Insert;
// or you call the DragOver method from the default DefaultDropHandler to get the adorner
//GongSolutions.Wpf.DragDrop.DragDrop.DefaultDropHandler.DragOver(dropInfo);
if (dropInfo.Data is string)
dropInfo.Effects = System.Windows.DragDropEffects.Copy;
}
@JobaDiniz E você deve dar ao seu template personalizado um fundo para permitir a queda do alvo em todo o tamanho do cliente
<ControlTemplate>
<Grid Background="{TemplateBinding Background}">
<TextBlock Text="Drag items from left ListBox" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</Grid>
</ControlTemplate>
Existe algum truque aqui?
Portanto, há um problema: D Obrigado, funcionou!
E você deve dar ao seu modelo personalizado um fundo para permitir a queda do alvo em todo o tamanho do cliente
Eu não posso acreditar! Muito obrigado, tenho batido minha cabeça sobre isso ( minha pergunta sobre o stackoverflow )
@JobaDiniz Acabo de responder ;-)
Vou adicionar uma nova propriedade anexada para permitir a exibição do adorno de destino em ItemsControls vazios.
ShowDropAdornerOnEmptyTarget
ou existe um nome melhor?
Vou adicionar uma nova propriedade anexada para permitir a exibição do adorno de destino em ItemsControls vazios
Não sei se isso é realmente necessário. Meu problema era outra coisa.
Comentários muito úteis
Portanto, há um problema: D Obrigado, funcionou!
Eu não posso acreditar! Muito obrigado, tenho batido minha cabeça sobre isso ( minha pergunta sobre o stackoverflow )