0

私はWindowsPhone(Mango用)でアプリケーションを開発することを学んでいます。パノラマページでアプリバーを使用しているときに、選択したページに応じてメニュー項目やボタンのテキストなどを変更したい(ミュージック+ビデオアプリなど)。

このために、xamlでアプリケーションバーを次のように作成しました。

    <phone:PhoneApplicationPage.ApplicationBar>
        <shell:ApplicationBar x:Name="appbar" IsMenuEnabled="True" IsVisible="True">
            <shell:ApplicationBarIconButton Text="Add" IconUri="/add.png" x:Name="btn" Click="Addbtn"/>
            <shell:ApplicationBar.MenuItems>
                <shell:ApplicationBarMenuItem Text="Exit" x:Name="menuitem" Click="menubtn"/>
            </shell:ApplicationBar.MenuItems>
        </shell:ApplicationBar>
    </phone:PhoneApplicationPage.ApplicationBar>

次に、パノラマページx:nameのイベントでそのプロパティによってappbarにアクセスしようとして、コントロールを操作しようとしました。SelectionChanged

    private void PanoControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {

            if (PanoControl.SelectedIndex == 0)
                appbar.IsMenuEnabled = false;
            else if(PanoControl.SelectedIndex == 1)
                menuitem.IsEnabled = false;
            else if (PanoControl.SelectedIndex == 2)
            {
                appbar.IsVisible = true;
                menuitem.IsEnabled = true;
            }
        }

あるパノラマページから別のパノラマページに移動すると、例外が生成されます。私を助けてください。これも可能ですか?

また、ここで初めて質問をします。私が何かを逃したかどうか私に知らせてください。

ありがとう、シッダント

4

2 に答える 2

2

ページのApplicationBarプロパティを介してアプリバーアイテムにアクセスします。操作が面倒になります。

private void PanoControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
{

    if (PanoControl.SelectedIndex == 0)
        this.ApplicationBar.IsVisible = false;
    else if(PanoControl.SelectedIndex == 1)
        ((ApplicationBarMenuItem)ApplicationBar.MenuItems[0]).IsEnabled = false;
    else if (PanoControl.SelectedIndex == 2)
    {
        this.ApplicationBar.IsVisible = false;
        ((ApplicationBarMenuItem)ApplicationBar.MenuItems[0]).IsEnabled = false;
    }
}

コミュニティはいくつかのソリューションを開発しました。1つはBindableApplicationBarです。これがMango用かWindowsPhone8用かはわかりません。このプロジェクトは、Mango固有の http://phone7.codeplex.com/です。

于 2013-01-11T01:09:44.847 に答える
1

ApplicationBarはシェルオブジェクトであるため、他のXAMLオブジェクトのような名前で参照することはできません。それはあなたのページに関連付けられているので、あなたは使用することができますthis.ApplicationBar

this.ApplicationBar.IsVisible = false;
于 2013-01-10T19:21:44.930 に答える