2

app.xaml で作成したアプリ バーをローカライズしたいのですが、バー アイテムのテキストをバインドしようとすると、 text cannot be empty と表示されます。ローカライズされたアプリ バーの他の例を試しましたが、どれも機能していません。すべてのページで使用できるアプリバー..

4

3 に答える 3

7

App.xaml次のように、いくつかの fakeを使用してグローバル アプリ バーを宣言できますText

<Application
    x:Class="PhoneApp1.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone">

    <!--Application Resources-->
    <Application.Resources>
        <local:LocalizedStrings xmlns:local="clr-namespace:PhoneApp1" x:Key="LocalizedStrings"/>
        <shell:ApplicationBar x:Key="GlobalAppBar">
            <shell:ApplicationBarIconButton Text="TEST" IconUri="/Assets/check.png"/>
        </shell:ApplicationBar>
    </Application.Resources>

    <Application.ApplicationLifetimeObjects>
        <!--Required object that handles lifetime events for the application-->
        <shell:PhoneApplicationService
            Launching="Application_Launching" Closing="Application_Closing"
            Activated="Application_Activated" Deactivated="Application_Deactivated"/>
    </Application.ApplicationLifetimeObjects>

</Application>

ローカリゼーションApp.xaml.csの適用:

    var appBar = App.Current.Resources["GlobalAppBar"] as ApplicationBar;
    ((ApplicationBarIconButton) appBar.Buttons[0]).Text = AppResources.AppBarButtonText;

AppBarのどこでもグローバルを使用できるようになりAppました。 の分離コードで初期化を行うだけですPhoneApplicationPage

public MainPage()
{
    InitializeComponent();
    ApplicationBar = App.Current.Resources["GlobalAppBar"] as ApplicationBar;
}
于 2013-07-15T11:03:20.167 に答える
2

または、デフォルトの VS テンプレートが示唆する方法を使用することもできます。

  1. ページの XAML に次のコードを追加します (最後の要素として表示されますが、それが重要かどうかはわかりません)。

  2. コード ビハインドでプライベート メソッドを作成し、メニュー項目を追加してデータバインドし、コンストラクター (または呼び出している場所InitializeComponent)から呼び出します。

XAML:

<phone:PhoneApplicationPage.ApplicationBar>
    <shell:ApplicationBar IsVisible="True" IsMenuEnabled="True" Mode="Minimized" />
</phone:PhoneApplicationPage.ApplicationBar>

C# コード ビハインド:

private void BuildLocalizedApplicationBar()
{
    // Create a new menu item with the localized string from AppResources.
    ApplicationBarMenuItem appBarMenuItem = new ApplicationBarMenuItem(AppResources.AboutMenuItem);
    ApplicationBar.MenuItems.Add(appBarMenuItem);
}

まだ理想的な解決策ではありませんが、そのような些細な理由だけで非ネイティブ コンポーネントを参照するよりはましかもしれません。

問題を解決するための参考資料として役立つ可能性のある公式の参考資料をいくつか示します。

于 2013-11-10T22:23:37.333 に答える