最近、WPFから何らかのシステムダイアログを呼び出す方法についての仕事を探していました。 WPFにはそのようなダイアログはありませんが、.NETにはシステムダイアログの呼び出しを可能にするライブラリがあります。
図書館のウェブサイト:
www.ookii.org/software/dialogs
このようなウィンドウを作成できるコード:
using ( var dialog = new TaskDialog ( ) )
{
dialog.WindowTitle = title;
dialog.MainInstruction = mainInstruction;
dialog.Content = exception.Message;
dialog.Width = 250;
dialog.AllowDialogCancellation = true ;
dialog.MainIcon = TaskDialogIcon .Error;
if ( ! string .IsNullOrEmpty( debugDetails ) )
{
dialog.ExpandedInformation = debugDetails;
dialog.FooterIcon = TaskDialogIcon .Information;
dialog.Footer = "<a href=\"\"> </a>" ;
dialog.EnableHyperlinks = true ;
dialog.HyperlinkClicked += delegate
{
Clipboard .SetText( debugDetails );
};
}
dialog.Buttons.Add( new TaskDialogButton ( ButtonType .Ok ) );
dialog.ShowDialog( );
}
ライブラリには多くのダイアログがあり、それらはすべてきれいです。 すべてをクリックできるデモがあります。
ほとんどのダイアログは、Vista以降のOSでのみ表示されました。 したがって、WinXPのサポートを提供する場合は、TaskDialog.OSSupportsTaskDialogsプロパティをチェックし、たとえばTaskDialogを作成できない場合はMessageBoxに簡単なものを描画する独自のラッパーを作成する必要があります。 私は最後のプロジェクトでそうしました。 一部のダイアログでは、古いシステムバージョンへのそのようなロールバックはすでにライブラリに含まれています。
一般に、WinFormsおよびWPFアプリケーションに役立つもの。