2013-07-15 107 views
2

我想我的本地化應用程序欄,我在App.xaml中取得了,但是當我嘗試將欄項目的文本約束它說的文字不能爲空,我已經試過的其他例子本地化應用程序欄,但他們都不是工作,可以對所有的網頁使用的應用欄..本地化的Windows Phone 8

回答

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> 

App.xaml.cs應用本地化:

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

現在你可以在App使用全局AppBar無處不在,只是在初始化代碼背後的PhoneApplicationPage

public MainPage() 
{ 
    InitializeComponent(); 
    ApplicationBar = App.Current.Resources["GlobalAppBar"] as ApplicationBar; 
} 
+0

感謝名單,它的工作。 ... –

3

你得到這個錯誤來自一個事實,即應用程序任務欄不一個DependencyObject,所以它不支持綁定。一個常見的替代方法是用DependencyProperties,最值得注意的是BindableApplicationBar定製AppBar使用..

<bar:BindableApplicationBarButton 
    Text="{Binding IconButtonText}" 
    IconUri="{Binding IconUri, FallbackValue=/Icons/Dark/appbar.add.rest.png}" 
    IsEnabled="{Binding ButtonIsEnabled}" /> 

CaliburnBindableAppBar

<bab:BindableAppBarButton 
    x:Name="Add" 
    Text="{Binding AddButtonText}" 
    Visibility="{Binding ShowAddButton, Converter={StaticResource BooleanToVisibilityConverter}}" 
    IconUri="{Binding ButtonIconUri}"/> 

(從單證的.xaml樣品)

+0

thanx您的答案,但我已經通過上面的回答如下解決這個問題? –

+0

@SandeepChauhan我很清楚,答案已被接受 - 別人可能會面臨同樣的問題,並可能使用此解決方案。 – lisp

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); 
} 

仍然沒有一個理想的解決方案,但可能比引用非本地部件只是爲了這樣的小事理由更好。 - http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh394040(v=vs.105).aspx

  • 如何創建