2009年3月11日水曜日

【開発】WPFからコンパイル済みヘルプファイルを呼び出す

微妙にこの日の続き。
という訳でタイトルの通り。
WindowsFormで作成している場合はSystem.Windows.Forms.HelpのShowHelpメソッドを使えば一発なんだけど、WPFで作成しているアプリケーションなのでそう単純にはいかない。
そこで、WindowsControlsとWindowsFormsの仲立ちをするWindowsFormsHostクラスを利用する。

以下覚え書き。
【XAML】
<Window x:Class="hoge"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms">
(略)
 <WindowsFormsHost Name="wfh" Width="0" Height="0">
  <wf:Label Name="wfhLbl"/>
 </WindowsFormsHost>
(略)
</window>


【C#】
/// <summary>
/// ヘルプファイル呼び出しメソッド
/// </summary>
private void showHelp()
{
 // System.Windows.Formsをusingするとややこしくなるので…
 System.Windows.Forms.Help.ShowHelp(wfh.Child, new Uri("pack://application:,,,/help.chm").LocalPath);
}

ヘルプファイル呼び出し先のWindowsFormsオブジェクトを配置する必要があるのと、(特にUI的に必要でなければ)サイズを0×0で指定すること、に注意すること。
メソッドさえできれば後はButtonClickなりKeyDownなりお好きなイベントで呼び出せばOK。

0 コメント: