前回は、Windows Forms 用だったので次は、WPF用。違うのはウィンドウハンドルを取得する方法だけ。
WPFアプリ用ですが、こちらは、XAMLからは呼べません。ファイルダイアログと同じですね。
ってことで、こちらもコードをペタッと。。。
using System;
using System.Windows;
using System.Windows.Interop;
namespace Wankuma.WPF
{
public class PickupFolderDialog
{
public PickupFolderDialog()
{
}
public String SelectedPath
{
get;
set;
}
public bool ShowDialog( Window ownerWindow )
{
var hwndSrc = HwndSource.FromVisual( ownerWindow ) as HwndSource;
return ShowDialog( hwndSrc.Handle );
}
public bool ShowDialog( IWin32Window ownerWindow )
{
return ShowDialog( (ownerWindow != null) ? ownerWindow.Handle : IntPtr.Zero );
}
public bool ShowDialog()
{
return ShowDialog( IntPtr.Zero );
}
private bool ShowDialog( IntPtr handle )
{
var dlg = new Wankuma.PickupFolderDialogCore();
dlg.SelectedPath = this.SelectedPath;
if( dlg.ShowDialog( handle ) )
{
this.SelectedPath = dlg.SelectedPath;
return true;
}
return false;
}
}
}
使い方は、名前空間が違うだけで、Windows FormsでもWPFでも同じなので省略。
特筆するようなところもないと思います。