0

WPF を使用して、リストボックスの項目とチェス盤の間でドラッグ アンド ドロップする方法を見つけようとしています。左側にリストボックス、右側にチェス盤があります。アイテムをドラッグしてから、チェス盤の 1 つまたは複数のマスにドラッグするにはどうすればよいですか。次に、四角をクリックすると、ここにある項目に関する情報が表示されます。誰かが私を助けてくれれば幸いです。みんなありがとう。

4

4 に答える 4

1

これはあなたに役立つと思います:http ://www.c-sharpcorner.com/uploadfile/dpatra/drag-and-drop-item-in-listbox-in-wpf/

于 2012-07-23T07:54:51.520 に答える
0

これは古いですが、私はこれに対するKISSソリューションを見つけました。

グリッド内のTextBlockまたは画像を使用してチェス盤グリッドを作成します。

渡されるデータのモデルを作成します。

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の正方形のスタイル設定にリソースを使用することを強くお勧めします。(1つは白、もう1つは黒です!)

ここで方法を学ぶ

次に、背後の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();
    }
于 2013-02-17T07:48:30.393 に答える
0

こんにちはここにあなたを正しい方向に導く方法があります

http://johnnblade.wordpress.com/2012/06/12/drag-and-drop-grid-control-row-devexpress-wpf/

他に質問があるかもしれませんが、教えてください

于 2012-07-23T07:56:27.993 に答える
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();

         }
   }

次に、アイテムソースをボードまたはチェスボックスのアイテムに割り当てます...コードを変更してみてください。取得できると思います

于 2012-07-23T12:57:41.650 に答える