我正试图找到一种方法来拖拽使用WPF在Listbox项目和棋盘之间删除。我左边有一个列表框,右边有一个棋盘。如何拖动项目然后拖动到棋盘的一个或多个方格中。然后点击广场,将显示有关此处项目的一些信息。如果有人可以帮助我,我很感激吗?谢谢大家。
答案 0 :(得分:1)
答案 1 :(得分:0)
嗨,这是一种让你朝着正确方向前进的方法
http://johnnblade.wordpress.com/2012/06/12/drag-and-drop-grid-control-row-devexpress-wpf/
让我知道你可能有更多问题
答案 2 :(得分:0)
这是我已经完成的..但是在这里我将文件从桌面拖到我的列表框
` public MainPage()
{
InitializeComponent();
CompositionTarget.Rendering +=new EventHandler(CompositionTarget_Rendering);
FileBoard.Drop += new DragEventHandler(FileBoard_Drop);
}
`
拖动元素
void FileBoard_Drop(object sender, DragEventArgs e)
{
if (e.Data != null)
{
FileInfo[] files = e.Data.GetData(DataFormats.FileDrop) as FileInfo[];
foreach (FileInfo fi in files)
{
_files.Enqueue(fi);
}
}
}
创建一个列表DATAinGrid
使用CompositionTargetRendering你可以解除文件
private void CompositionTarget_Rendering(Object sender, EventArgs e)
{
if (_files.Count != 0)
{
// Create a photo
FileInfo fi = _files.Dequeue();
}
}
然后将itemsource分配给你的棋盘或棋盘物品...尝试修改代码我想你会得到它
答案 3 :(得分:0)
这已经过时了,但我找到了一个KISS解决方案。
使用TextBlocks或网格中的图像创建国际象棋棋盘格。
为要传递的数据创建模型。
xml中的执行此操作:
<TextBlock x:Name="myname" x:Uid="myname" Grid.Row="0" Grid.Column="1" Margin="3" Text="{Binding myfield}" Style="{DynamicResource myStyle}" AllowDrop="True" Drop="Square_Drop"/>
<TextBlock x:Name="myname" x:Uid="myname" Grid.Row="1" Grid.Column="1" Margin="3" Text="{Binding myfield}" Style="{DynamicResource myStyle}" AllowDrop="True" Drop="Square_Drop"/>
//etc etc etc
<ListBox x:Name="myListBox" x:Uid="myListBox"
ItemContainerStyle="{DynamicResource myListBoxListItemStyle}" Margin="10"
DisplayMemberPath="myField"
PreviewMouseLeftButtonDown="List_PreviewMouseLeftButtonDown">
我强烈建议您使用资源来设置TextBlock / Image方块的样式。 (一个用于白色,一个用于黑色!)
然后在你的c#后面你需要:
private void List_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (myListBox.SelectedItem != null)
{
ListBox parent = (ListBox)sender;
myModel data = parent.SelectedItem as myModel;
if (data != null)
{
DragDrop.DoDragDrop(parent, data, DragDropEffects.Move);
}
}
}
private void Square_Drop(object sender, DragEventArgs e)
{
MyModel data = e.Data.GetData(typeof(MyModel)) as MyModel;
TextBlock tb = sender as TextBlock;
tb.DataContext = data;
//Add any database update code here
refreshInterface();
}