【问题标题】:ApplicationBar Bindings Windows Phone应用程序栏绑定 Windows Phone
【发布时间】:2013-10-06 06:10:39
【问题描述】:

无法绑定ApplicationBar,我试过了:

<phone:PhoneApplicationPage.ApplicationBar>
    <shell:ApplicationBar IsVisible="True" IsMenuEnabled="True">
        <shell:ApplicationBarIconButton 
            x:Name="btnTest"
            IconUri="/Assets/AppBar/appbar.add.rest.png" 
            Text="{Binding MyBtnText}" />
    </shell:ApplicationBar>
</phone:PhoneApplicationPage.ApplicationBar>

private void MainPage_Loaded(object sender, RoutedEventArgs e)
{
    btnTest.Text = AppResources.Reset;
}

【问题讨论】:

    标签: c# xaml binding windows-phone


    【解决方案1】:
    private void MainPage_Loaded(object sender, RoutedEventArgs e)
    {
        ApplicationBarIconButton btn= ApplicationBar.Buttons[0] as ApplicationBarIconButton;
        if (btn!= null)
        {
            btn.Text = AppResources.Test;
        }
    
    }
    

    来源:http://www.diaryofaninja.com/blog/2011/07/05/solved-why-donrsquot-applicationbar-bindings-work-ndash-windows-phone-7-sdk

    或从C# 后面的代码构建ApplicationBar

    // Build a localized ApplicationBar
    private void BuildLocalizedApplicationBar()
    {
        // Set the page's ApplicationBar to a new instance of ApplicationBar.
        ApplicationBar = new ApplicationBar();
    
        // Create a new button and set the text value to the localized string from AppResources.
        ApplicationBarIconButton appBarButton = 
            new ApplicationBarIconButton(new   
            Uri("/Assets/AppBar/appbar.add.rest.png", UriKind.Relative));
            appBarButton.Text = AppResources.Reset;
        ApplicationBar.Buttons.Add(appBarButton);
    
        // Create a new menu item with the localized string from AppResources.
        ApplicationBarMenuItem appBarMenuItem = 
            new ApplicationBarMenuItem(AppResources.AppBarMenuItemText);
        ApplicationBar.MenuItems.Add(appBarMenuItem);
    }
    

    来源:

    How to build a localized app for Windows Phone

    Tips for Localizing Windows Phone 8 XAML Apps - Part1

    【讨论】:

      【解决方案2】:

      ApplicationBar 不是 DependencyObject,不支持绑定。即使您只想将绑定用于 AppBar 本地化(而不是与 ViewModel 同步的操作或自动启用)并最终将整个 ApplicationBar 设置移动到代码隐藏中,您也应该考虑使用一个库,该库可为您在 xaml 中的 AppBar 提供更大的灵活性。参见例如BindableApplicationBarCaliburnBindableAppBar。还有其他允许为 AppBar 绑定的开源项目。

      样本:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-03-07
        • 1970-01-01
        • 1970-01-01
        • 2023-03-16
        • 1970-01-01
        • 1970-01-01
        • 2015-03-08
        相关资源
        最近更新 更多