【问题标题】:c# uwp drag and drop - cant make a swapc# uwp 拖放 - 不能进行交换
【发布时间】:2021-08-29 14:14:32
【问题描述】:

所以我有 10x10 网格和图片,我想通过拖放交换,但我实际上无法获得 目标和选择的图像以制作产卵 我都是从视图模型代码中制作的 在事件中,发送者是一个网格,而 e 是 DragEventArgs

      public MainViewModel()
    {
        GameGrid = new Grid { AllowDrop = true };
        GameGrid.DragOver += GameGrid_DragOver;
        GameGrid.Drop += GameGrid_Drop;

        for (int row = 0; row < 10; row++)
        {
            GameGrid.RowDefinitions.Add(new RowDefinition());
            for (int col = 0; col < 10; col++)
            {
                if (row == 0)
                    GameGrid.ColumnDefinitions.Add(new ColumnDefinition());

                var image = new Image { Source = logic.GetImage(), CanDrag = true, AllowDrop = true };
                Grid.SetRow(image, row);
                Grid.SetColumn(image, col);
                GameGrid.Children.Add(image);
            }
        }

    }

    private void GameGrid_DragOver(object sender, Windows.UI.Xaml.DragEventArgs e)
    {

        e.AcceptedOperation = DataPackageOperation.Move;
    }
    private async void GameGrid_Drop(object sender, Windows.UI.Xaml.DragEventArgs e)
    {
        if (logic.IsValidSwap(selected, selected))
        {
        }
    }

// 但我无法获取发送 func 的 imeges 是有效交换

【问题讨论】:

    标签: c# uwp drag-and-drop grid


    【解决方案1】:

    而不是在事件中分配给网格:

    GameGrid.DragOver += GameGrid_DragOver; 
    GameGrid.Drop += GameGrid_Drop;
    

    它应该分配给for循环内的每个图像:

    image.Drop += GameGrid_Drop; 
    image.DragOver += GameGrid_DragOver;
    

    而发送者将是图像——您可以知道列和行并进行切换。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 2017-05-14
      • 2012-06-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多