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]イベントが実行時に発生しない人の参考になれば幸いです。
スポンサーリンク
最後までご覧いただき、ありがとうございます。