私は、メンテナンス画面、問い合わせ画面、レポート画面など、さまざまなことを行う一連のユーザーコントロールを開発しています。各画面には専用の目的があり、1つのユーザーコントロールが1つの画面のすべての機能を保持します。
私はavalondockを使用しており、これらのユーザーコントロールをLayoutDocumentsに配置できます。これにより、画面/ユーザーコントロールごとに個別のタブが作成されます。ユーザーがアクセスする必要のある画面を選択できるように、メニューシステムを設定しました。新しい画面ごとに、新しいLayoutDocumentを作成し、それに適切なコントロールを追加してから、LayoutDocumentをドッキングパネルの子に追加します。
これはすべて正常に機能しています。
Avalonドックには、レイアウトドキュメントをドラッグしてフロートさせる機能もあります。必要に応じて、アプリ内の別の場所にドッキングすることもできます。
この概念をさらに一歩進めたいと思います。レイアウトドキュメントを右クリックして[外部ウィンドウを作成]を選択できるようにします(正確な表現は後で説明します)。このアクションの効果は、タスクバーに独自のアイコンを持つ新しいアプリケーションを作成することです。それと他のアプリの間でAlt-Tabキーを押すことができます。
たとえば、Excelでドキュメントを編集しているときに、Excelの2番目のインスタンスを開くようなものです。Windows 7では、タスクバーに2つのExcelアイコン(前後に1つずつ)が表示され、それらの間をAltキーを押しながらタブで移動できます。
これは私が求めている行動とほぼ同じです。ただし、2番目のアプリは最初のアプリの本格的なコピーではありません。ユーザーが選択したユーザーコントロールは1つだけです。
これは私が立ち往生しているところです、そして少しのガイダンスが欲しいです。
必要なユーザーコントロールを渡すことができる、ある種のシェルアプリがおそらく必要になると思います。シェルは、タイトル、X、最小化などのウィンドウとして機能します。その場合、ユーザーコントロールがそのシェルの唯一のコンテンツになります。process.startを使用して新しいプロセスを作成し、起動しますか?
理想的には、ユーザーが現在表示しているのと同じ状態で同じコントロールを渡すことができます。たとえば、メンテナンス画面で顧客レコードを編集している途中の場合は、[外部ウィンドウ]オプションを選択します。同じ顧客レコードが新しいウィンドウに表示されます。
私が正しい方向に進んでいる場合、誰かが同様のことをしたり、アドバイスを提供したりしましたか?
シェルアプリの作成方法は知っていると思いますが、ユーザーコントロールを動的に渡す方法がわかりません。ユーザーコントロールごとに異なるシェルアプリを作成することは避けたいと思います。