single.php

C# WinUI3のDragStaringイベントが動作しない場合の対処法

C# WinUI 3アプリを作っていく途中で、調べたことを忘録的に投稿します。今回はWinUI3プロジェクトで、Xamlで追加したImageコントロールのDragStartingイベントが動作しない場合の対処法です。

この記事は、Microsoft公式ページの「XAMLスタイル」を参考に書いています。

DragStartingイベント

例えば、Xamlで定義したImageコントロールにDragStartingイベントを追加した場合

<Image x:Name="myimage" DragStarting="myimage_DragStarting" />

実装コードで処理を書いても

private void myimage_DragStarting(UIElement sender, DragStartingEventArgs args)
{
  Debug.Print("Draaaag");
}

実行時に、出力されることはありません。

CanDragプロパティの変更が必要

DragStartingイベントを動作させるためには同じコントロールで[CanDrag]プロパティを有効にする必要があります。

具体的にはXamlに次のような実装を行います。

<Image x:Name="myimage" CanDrag="True" ... />

[CanDrag]プロパティが無効(False)の場合にはImageコントロールに設定された画像をマウスポインターでドラッグしても何も効果がありません。

[CanDrag]プロパティを有効(True)にするとImageコントロールに設定された画像をドラッグすると画像がマウスポインターに追従する効果が追加されます。

また、[CanDrag]プロパティを有効(True)な場合には実行時に[DragStarting]イベントも有効になります。

まとめ

今回は短い記事ですが、Visual StudioのWinUI3プロジェクトで、Xamlに追加したImageコントロールなどの[DragStarting]イベントを追加しても実行時に処理されない場合があります。

原因は[CanDrag]プロパティが無効(False)になっている可能性があり、有効(True)を設定することで実行時に[DragStarting]イベントが発生します。

C#のWinUI 3アプリで[DragStarting]イベントが実行時に発生しない人の参考になれば幸いです。

スポンサーリンク

最後までご覧いただき、ありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です