在WPF listbox empty datatemplate回答后,我纵向和横向将TextBlock对齐到中心。
但是,当显示空模板时,我无法将项目拖放到ListBox 中,除非我将鼠标悬停在实际的TextBlock 上。我希望能够在ListBox内的任何位置拖动项目。
MainWindow.xaml
<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"/>
<ListBox Grid.Column="1" ItemsSource="{Binding Target}"
AllowDrop="True" 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>
ViewModel.cs
using GongSolutions.Wpf.DragDrop;
using System.Collections.ObjectModel;
namespace EmptyListBoxWithDragAndDrop
{
public class ViewModel : IDropTarget
{
public ViewModel()
{
Source = new ObservableCollection<string>();
Target = new ObservableCollection<string>();
Source.Add("Item 1");
Source.Add("Item 2");
Source.Add("Item 3");
Source.Add("Item 4");
Source.Add("Item 5");
Source.Add("Item 6");
Source.Add("Item 7");
}
public ObservableCollection<string> Source { get; private set; }
public ObservableCollection<string> Target { get; private set; }
public void DragOver(IDropInfo dropInfo)
{
if (dropInfo.Data is string)
dropInfo.Effects = System.Windows.DragDropEffects.Copy;
}
public void Drop(IDropInfo dropInfo)
{
if (dropInfo.Data is string)
{
Target.Add((string)dropInfo.Data);
}
}
}
}
我正在使用gong-wpf-dragdrop lib。有谁知道如何解决这个问题?
答案 0 :(得分:0)
您应该为自定义模板提供背景,以允许在整个客户端大小下降目标。
<ControlTemplate>
<Grid Background="{TemplateBinding Background}">
<TextBlock Text="Drag items from left ListBox" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</Grid>
</ControlTemplate>
希望这有帮助!