Windows Phone 8中应用程序栏的本地化

San*_*han 2 c# xaml windows-phone windows-phone-8

我希望本地化我在App.xaml中制作的App Bar,但是当我尝试绑定条形项目的文本时,它说文本不能为空,我尝试了本地化应用程序栏的其他示例,但它们都没有用于app栏,可以在所有页面上使用..

Pav*_*iuk 7

您可以App.xaml使用一些假的声明全局应用栏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>
Run Code Online (Sandbox Code Playgroud)

App.xaml.cs应用本地化:

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

现在你可以使用全局AppBar无处不在App,只需在后面的代码中初始化PhoneApplicationPage:

public MainPage()
{
    InitializeComponent();
    ApplicationBar = App.Current.Resources["GlobalAppBar"] as ApplicationBar;
}
Run Code Online (Sandbox Code Playgroud)