gpt4 book ai didi

c# - wpf拖放可视化选择项目

转载 作者:太空宇宙 更新时间:2023-11-03 16:45:37 24 4
gpt4 key购买 nike

我在我的程序中使用拖放功能,效果很好。但是我正在处理列表框中的单词列表,当我选择一个单词并将其拖到另一个列表框时,用户不再知道他选择了哪个单词,因为第一个列表框中项目的“视觉”选择没有出现。有谁知道如何在列表框中查看所选项目?在我实现拖放之前,当我选择单词时,所选单词有另一种颜色,但是当我添加拖放时,我再也看不到它了。谁能帮帮我?

http://img196.imageshack.us/img196/8408/imgmt.jpg

    private void lstAlleTabellen_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
startpoint = e.GetPosition(null);
}

private void lstAlleTabellen_MouseMove(object sender, MouseEventArgs e)
{
// Get the current mouse position
System.Windows.Point mousePos = e.GetPosition(null);
Vector diff = startpoint - mousePos;

if (e.LeftButton == MouseButtonState.Pressed &&
Math.Abs(diff.X) > SystemParameters.MinimumHorizontalDragDistance ||
Math.Abs(diff.Y) > SystemParameters.MinimumVerticalDragDistance)
{
// Get the dragged ListViewItem
System.Windows.Controls.ListBox listAlle = sender as System.Windows.Controls.ListBox;
ListBoxItem listItem =
FindAnchestor<ListBoxItem>((DependencyObject)e.OriginalSource);
Tabel tabel=new Tabel();
try
{
// Find the data behind the ListViewItem
tabel = (Tabel)listAlle.ItemContainerGenerator.
ItemFromContainer(listItem);


// Initialize the drag & drop operation
DataObject dragData = new DataObject("myFormat", tabel);
DragDrop.DoDragDrop(listItem, dragData, DragDropEffects.Move);
}
catch
{
}
}
}

private static T FindAnchestor<T>(DependencyObject current) where T : DependencyObject
{
do
{
if (current is T)
{
return (T)current;
}
current = VisualTreeHelper.GetParent(current);
}
while (current != null);
return null;
}
private void lstGekozenTabellen_DragEnter(object sender, DragEventArgs e)
{
if (!e.Data.GetDataPresent("myFormat") ||sender == e.Source)
{
e.Effects = DragDropEffects.None;
}
}

private void lstGekozenTabellen_Drop(object sender, DragEventArgs e)
{
try
{
if (e.Data.GetDataPresent("myFormat"))
{
Tabel tabel = e.Data.GetData("myFormat") as Tabel;
System.Windows.Controls.ListBox listGekozen = sender as System.Windows.Controls.ListBox;
listGekozen.DisplayMemberPath = "naam";
listGekozen.SelectedValuePath = "naam";
listGekozen.Items.Add(tabel);
lTabellen.Remove(tabel);

lstAlleTabellen.ItemsSource = null;
lstAlleTabellen.Items.Clear();
lstAlleTabellen.ItemsSource = lTabellen;
}


}
catch { }
}

}

最佳答案

例如,您可以为此使用样式触发器(完整解决方案 here):

    <Style x:Key="ListItemStyle" TargetType="ListViewItem">
<Style.Resources>
<LinearGradientBrush x:Key="MouseOverBrush" StartPoint="0.5, 0" EndPoint="0.5, 1">
<GradientStop Color="#22000000" Offset="0" />
<GradientStop Color="#44000000" Offset="0.4" />
<GradientStop Color="#55000000" Offset="0.6" />
<GradientStop Color="#33000000" Offset="0.9" />
<GradientStop Color="#22000000" Offset="1" />
</LinearGradientBrush>
</Style.Resources>
<Setter Property="Width" Value="Auto" />
<Setter Property="Padding" Value="0,4" />
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="Border.BorderThickness" Value="0,0,0,0.5" />
<Setter Property="Border.BorderBrush" Value="LightGray" />
<Style.Triggers>
<Trigger Property="jas:ListViewItemDragState.IsBeingDragged" Value="True">
<Setter Property="FontWeight" Value="DemiBold" />
</Trigger>
<Trigger Property="jas:ListViewItemDragState.IsUnderDragCursor" Value="True">
<Setter Property="Background" Value="{StaticResource MouseOverBrush}" />
</Trigger>
</Style.Triggers>
</Style>

关于c# - wpf拖放可视化选择项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6135661/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com