2

私の WPF アプリケーションは本当に苦痛になりつつあります。ウィンドウを作成しましたが、ボタンをクリックしたときに別のページをロードしたいと考えています。これは簡単だと思いましたが、そうではないようです。を使用して、なんとか他のページをロードできましたthis.content = new UserPage()。しかし、この UserPage からメイン ウィンドウに戻ることができません。this.contentウィンドウが子にできないため、使用できません。

したがって、私は周りを検索し、NavigationService を使用して物事をより簡単にする必要があることを発見しました。使用しようとしましNavigationService.GetNavigationService(this)たが、常にnullを返すため、これは機能しませんでした。私のメインウィンドウはから派生したものでWindowあり、ではないと考えましたNavigationWindow。プロジェクトを再度開始せずに Window を NavigationWindow に変換する方法はありますか? 新しいファイルを作成するときはいつでも、NavigationWindow テンプレートはありません。ウィンドウ、ページ、ユーザー コントロールなどだけです。

XAML を NavigationWindow に手動で置き換えてみたところ、正常に動作しましたが、NavigationService メソッドは引き続き null を返しました。上部には、前後の矢印 (どちらも無効) のバーもありましたが、これは本当に必要ありません。Navigate()ページを簡単に切り替えることができるように、メソッドを使用したいと思います。私に何ができるかについてのアイデアはありますか?

助けてくれてありがとう、これは私を夢中にさせています!:)

4

3 に答える 3

1

XAMLをNavigationWindowに手動で置き換えようとしましたが、正常に実行されましたが、NavigationServiceメソッドはnullを返しました

NavigationServiceウィンドウがすでにの場合は必要ありませんNavigationWindowNavigationWindowメソッドがありNavigateます。

標準Windowを使用して、それにFrameコントロールを設定することもできます。NavigationWindowウィンドウに埋め込まれていることを除けば、おおよそ、と同じように機能します。

于 2010-08-15T13:33:14.563 に答える
1

Skoder、

あなたが何をしようとしているのかよくわかりませんが、私が手助けできるかどうかはわかります。まず、NavigationWindowが必要なようです。アプリケーションに1つのページだけが必要な場合は、最初のアプローチが機能しますが、複数のページについて話し、あるページから別のページに移動したい場合は、NavigationWindowについて話します。

次に、ナビゲーションウィンドウを選択すると、XAMLは単純で、WindowをNavigationWindowに置き換えるだけで、ウィンドウのコンテンツを直接制御しなくなることを理解する必要がある場合を除いて、問題はありません。代わりに、組み込みのNavigationServiceがこれを処理します。ああ、クラスがすでに提供しているので、明示的なNavigationServiceを作成する必要はありません。あなたは単にナビゲートする必要があります:

 this.Navigate(new Url("pack://aplication:,,,/MyAssembly,component/MyPage.xaml", UriKind.Absolute));

または、XAMLを使用することもできます。

Source = "pack://aplication:,,,/MyAssembly,component/MyPage.xaml"

この時点で、ユーザーが1つのページから次のページに移動できるようにするためのインターフェイス(BreadcrumbコントロールやTreeViewなど)が必要になりますが、ユーザーがそこに入ると、組み込みのトラベルコントロールを使用して、次のジャーナルをナビゲートできます。あなたのために自動的に維持されます。つまり、ナビゲートの基本的な作業のほとんどはあなたのために行われ、ユーザーがどのようにコンテンツに進むかを理解する必要があります。

しかし、この時点で、物事はかなり奇妙になる可能性があります。私はこれに自分で遭遇しました。グリッドやその他のコンテンツをフレームに明示的に追加することはできないため、通常のアプリケーションを構成する追加のコントロールを追加するには、NavigationWindowのテンプレートを変更する必要があります。メニューやツールバーなどは、標準のWPFNavigationWindowの一部ではありません。

この恥知らずな自己宣伝を許してください、しかし私はこれらの制限に遭遇し、市場で入手可能なものがなかったので、私は製品を作りました。デモは次の場所でご覧いただけます。

http://www.teraque.com/products/explorer-chrome-suite/

これは、Microsoftが無料で提供するWPFNavigationControlのプロフェッショナルバージョンになるように設計されています。デモをご覧ください。スイートを購入したくない場合は、これがアプリケーションの方向性である場合は、ポインターを提供させていただきます。

心から、

ドナルドロイエアリー

donald.roy.airey@teraque.com

于 2011-02-14T00:15:39.383 に答える
0

私はそれを行いましたが、フレームにあるページのvb.netステートメントから親ウィンドウを再ロードする方法を理解できませんでした。実行したいwindow_loaded関数にいくつかのコードがあります。

于 2010-08-16T01:49:49.157 に答える