9

すべてWPFで:

ウィザードアプリケーションを開発する場合、ユーザーはメインアプリに移動する前に、いくつかの簡単な質問に答える必要があります。メインアプリには、ウィザードから取得した情報が事前に入力されています。

私はウィンドウから始め、次にユーザーコントロールを追加することを計画しました。メインウィンドウには、最初の行にユーザーコントロールがあり、次に2番目の行のコントロール間の移動を制御するための[次へ]ボタンと[前へ]ボタンがあります。このようにして、次のような画面を切り替えるロジックを簡単に制御できます。

WizardControl1.IsVisible = false;
WizardControl2.IsVisible = true;

ただし、何らかの理由で、ユーザーコントロールにはIsVisibleのセッターがありません。やあ。

そのため、ウィザードの各セクションに個別のウィンドウを使用するだけだと思いました。このアプローチの問題は、間を移動するとウィンドウがランダムな位置で開き、次のウィンドウでウィザードをステップ実行すると、次のウィンドウがランダムにポップアップすることです。これは非常に気が散り、イライラします。

では、どうすればウィザードを適切に開発できますか?なぜこれがそれほど難しいのかわかりません...正確にはロケット科学ではありません...テキストとコントロールを置き換え、次/前を押した後に入力を保存します!

ありがとう

4

6 に答える 6

7

このリンクを確認してください: http://www.codeproject.com/KB/WPF/InternationalizedWizard.aspx これは、Josh Smith による WPF でのウィザードの構築に関する記事で、良いパターンのようです。私はそれが私に役立つことを発見しました。

于 2010-01-27T14:23:46.463 に答える
4

codeplexにはオープンソースのAvalonWizardコントロールもあります

于 2011-02-02T22:34:56.057 に答える
3

おそらく、データバインディングとテンプレートセレクターを使用してこれにアプローチします。ウィザード フォームを「WizardData」クラスにバインドし、「WizardPage」基本クラスのリストを公開します。

WizardData クラスは、フォームの正しい情報を定義するプロパティを公開し、テンプレート セレクターを使用して特定のウィザード ページの実際のタイプに基づいて表示する適切なコントロールを決定するメイン ページのコントロールを表示できます。

それは実際よりも多くの作業のように聞こえます。また、コードと UI (すべての "作業" は WizardData クラスと WizardPage クラスによって行われる) を適切に分離し、UI から独立してロジックをテストできるという利点もあります。

これは、問題にアプローチする非常に WPF/MVVM の方法でもあります。

于 2010-01-27T03:21:18.977 に答える
0
  1. このプロパティは「可視性」と呼ばれます。
  2. コントロールを非表示にするのではなく、動的に追加および削除した方がうまくいくことがわかりました。
于 2010-01-27T04:26:35.417 に答える
0

これがあなたの質問に直接対応していないことは承知していますが、可能な代替手段として言及したいと思いました。私は Actipro のウィザード コントロールを使用してかなり良い結果を得ており、サポートが必要なときは非常に反応が良かったです。私は彼らとは何の関係もありません。ウィザードを管理するために配管を作成する必要がないのが好きです。

于 2010-01-27T03:29:07.460 に答える