0

ASP.NET のコンテンツ プレースホルダーと同様に、派生ページがマークアップを追加するための共通の場所を含む、すべての Windows Phone 7 ページに共通のベース ページを定義しようとしています。

これまでに見たコード サンプルはすべてコードの動作を追加しますが、ベース ページを使用して次のことを行う方法を示すものはありません。

  • アプリケーションのタイトルを左上隅に配置します
  • 会社のロゴを右上隅に配置する
  • 動的な (つまり、ユーザーが変更できる) 背景画像を持っている

カスタム MyTitleControl を定義して上記のほとんどの項目を実現できますが、(共通のベース ページから派生させるのではなく) それを参照するすべてのページに依存する必要があります。これはWP7でも可能ですか?

4

3 に答える 3

1

できません。これは WP7 の制限です。

すべての WP7 アプリには、関連付けられた PhoneApplicationFrame の単一のインスタンスがあります。現在のページが変更されるたびに、PhoneApplicationFrame の「Content」プロパティが PhoneApplicationPage に設定されます。また、PhoneApplicationPage は、内部の追加の PhoneApplicationPages をサポートしていません。

同様のことを達成する唯一の方法は、すべてのページを UserControls に変換し、 PhoneApplicationPage が 1 つだけであることを確認することです。

于 2012-10-02T08:45:24.260 に答える
1

基本ページ クラスでこれを行う唯一の方法は、"loaded" イベントまたはより適切なメソッド OnNavigatedTo を使用し、必要に応じてビジュアル ツリーを変更することです。

PhoneApplicationPage クラスは UserControl から派生するため、ビジュアル ツリーは InitializeComponent 自動生成メソッドを使用して構築されます。XAML を読み取り、コントロールをインスタンス化し、ルート コントロールを現在のユーザー コントロール (このシナリオではページ) のコンテンツとして設定するために生成されます。

したがって、後で (ctor ではなく) 使用するか、このメソッドの後でツリーを変更することができます。

別のオプションは、ページのスタイルを作成し、それをすべてのページに適用することです。

于 2012-10-01T16:16:25.707 に答える
0

PhoneApplicationPage から継承し、新しいクラスに追加のプロパティ、新しい既定のスタイル、新しいテンプレートを与えることができます。結局のところ、ページはカスタム プロパティを持つ UserControl に他なりません。

次に、myPage.xaml.cs ファイルと myPage.xaml ファイルを変更して、PhoneApplicationPage からではなく、新しいクラスから継承します。

于 2012-10-02T09:20:16.720 に答える