Bitmap > Bitmap の使い方 > ドラッグアンドドロップ動作の追加 |
Silverlight 5 では、すべてのコントロールに、固有のドラッグアンドドロップイベント(DragOver、DragLeave、Drop など)が用意されています。これを使用して、事実上あらゆる要素間のドラッグアンドドロップ処理を管理できます。さらに重要なこととして、Silverlight 5 では、Silverlight アプリケーションの外部からも項目をドラッグできます。必要な作業は、コンテナの AllowDrop プロパティを True に設定したら、Drop イベントを処理してファイルを取得し、目的の作業を行うだけです。このサンプルでは、Microsoft 提供のサンプルのコードを使用します。ドロップ可能なコントロールとして、C1CheckeredBorder コントロールを使用します。
C# |
コードのコピー
|
---|---|
<c1:C1CheckeredBorder Name="checkeredBack" AllowDrop="True" Drop="DropTarget_Drop" /> private void DropTarget_Drop(object sender, DragEventArgs e) { // DragEventArgs から FileInfo 配列を取得します IDataObject dataObject = e.Data; var files = (FileInfo[])dataObject.GetData(DataFormats.FileDrop); //最初にファイルを取得します if (files != null) { FileInfo file = files[0]; if (IsImageFile(file.Extension)) { Stream stream = file.OpenRead(); LoadImageStream(stream); } } } |
コンピュータから画像ファイルを Web ブラウザにドラッグすると、ポインタがドロップを表すポインタに変わります。このサンプルは、(画像の拡張子をチェックした上で)1つのファイルのみを受け入れますが、Microsoft のサンプルのように、一度に複数のファイルをドロップすることも簡単にできます。