1

WP7 電話アプリで MVVM アーキテクチャを使用しています。私の現在のビューは、親ページ内に存在するユーザー コントロールです (標準ページ -- スタンドアロン ユーザー コントロールではありません)。メイン ページを親としてユーザー コントロールの「親」プロパティに渡しました。親のほとんどすべてのコントロールにアクセスできます。例: これは、親のロック可能なピボットにアクセスするために機能します。

Dim p As LockablePivot
p = MyParent.FindControl("myLockablePivot")
If p IsNot Nothing Then
..do something with the pivot
End If

私の問題は、親の ApplicationBar にアクセスすることです。これは動作しません。アプリケーションバーに割り当てられた x:Name をトリプルチェックしました。(null 参照の例外):

    Dim ap As ApplicationBar
    ap = MyParent.FindName("appBar")

    ap.IsVisible = False

どんな助けでも大歓迎です。

4

1 に答える 1

3

私は同じ問題にぶつかりましたが、ナイジェルがこの回答で指摘しているように、

「ApplicationBar は標準の Silverlight オブジェクトではありません。そのため、ビジュアル ツリーに収まらず、バインドできず、x:Name が機能しません。」

PhoneApplicationPage クラスにApplicationBarプロパティがあることがわかります。これを使用してアプリケーション バーにアクセスし、そこからボタンまたはメニュー項目を取得できます。

テキストをローカライズするためにページ コンストラクターで行ったことの C# の例を次に示します。

public MyPage()
{
    InitializeComponent();

    (this.ApplicationBar.Buttons[0] as ApplicationBarIconButton).Text = AppResources.event_add_menu_item;
}

確かに、インデックスを使用してアイテムを見つけてからキャストする必要があるのは残念ですが、少なくとも機能します!

于 2011-11-23T22:10:10.967 に答える