WP7 アプリケーションのコードでアイコンとアイコンの動作を変更したいと考えています。MainPage
コンストラクターとで試しましたMainPage_Loaded
が、 ApplicationBar ( x:Name
) は常に null であると表示されます。
同じページと異なる状態を使用しているため、どうすれば変更できますか?
WP7 アプリケーションのコードでアイコンとアイコンの動作を変更したいと考えています。MainPage
コンストラクターとで試しましたMainPage_Loaded
が、 ApplicationBar ( x:Name
) は常に null であると表示されます。
同じページと異なる状態を使用しているため、どうすれば変更できますか?
残念ながら、現時点ではアプリケーション バーのボタンにコードからアクセスすることはできません。そのタスクを達成するために、公式の Mircosoft Training Kit for WP7 の例の 1 つに従いました。XAML といくつかのコードを次に示します。
<phone:PhoneApplicationPage.ApplicationBar>
<shell:ApplicationBar>
<shell:ApplicationBarIconButton IconUri="/icons/appbar.pin.png" IsEnabled="True" Text="Anpinnen" x:Name="appPinPage" Click="appPinPage_Click" />
</shell:ApplicationBar>
</phone:PhoneApplicationPage.ApplicationBar>
ApplicationBar は PhoneApplicationPage のプロパティであるため、PhoneApplicationPage の ApplicationBar プロパティに割り当てる ApplicationBar オブジェクトに明示的な名前を付ける必要はありません。上記の xaml コードでボタンの画像を変更する例を次に示します。このコードは、PhoneApplicationPage のオーバーライドされた OnNavigatedTo() メソッドで呼び出されます。
if (this.ViewModel.IsPinned())
{
((ApplicationBarIconButton)this.ApplicationBar.Buttons[0]).Text = Resource1.txtUnpin;
((ApplicationBarIconButton)this.ApplicationBar.Buttons[0]).IconUri = new Uri("/icons/appbar.unpin.png", UriKind.Relative);
}
else
{
((ApplicationBarIconButton)this.ApplicationBar.Buttons[0]).Text = Resource1.txtPin;
((ApplicationBarIconButton)this.ApplicationBar.Buttons[0]).IconUri = new Uri("/icons/appbar.pin.png", UriKind.Relative);
}
x:Name
プロパティを削除して、Page.ApplicationBarを使用してアクセスしてみてください。
残念ながら、ApplicationBarは Silverlight コントロールではありません ( UIElementから継承されません)。つまり、ボタンを使用してアクセスすることはできませんが、 ApplicationBarプロパティx:Name
を使用してページ内でアクセスできます。
このサンプルをチェックして、ページの分離コードから ApplicationBar を作成してアクセスする方法を確認してください。
MVVM アーキテクチャを使用する場合は、Cimbalino Windows Phone Toolkitの ApplicationBarBehaviour を確認する必要があります。これにより、多くの作業を節約できます!!!