2013-10-02 42 views
1

我需要一个可以绑定到这两个命令和点击事件的应用程序条(点击事件需要与UI相关的东西,我无法在我的模型中处理它们)。BindableApplicationBar不会触发点击事件

我想从NuGet的BindableApplicationBar和命令绑定工作正常,但没有办法得到轻拍事件。

请注意,我正在更改DataContext以使绑定工作,但Tap事件必须在代码隐藏中进行管理(并且我不知道这是否是我的问题的主要原因!)

这里是酒吧的XAML:

<bindableApplicationBar:Bindable.ApplicationBar> 
    <bindableApplicationBar:BindableApplicationBar> 
     <bindableApplicationBar:BindableApplicationBarButton 
      Text="{Binding MainSearchText}" 
      IconUri="Assets/AppBar/feature.search.png" 
      Command="{Binding NavigateCommand}" 
      Name="SearchBarButton" /> 
     <bindableApplicationBar:BindableApplicationBarButton 
      Text="{Binding Path=LocalizedResources.AppBarSettingsText, Source={StaticResource LocalizedStrings}}" 
      IconUri="Assets/AppBar/feature.settings.png" 
      Tap="SettingsButton_OnTap" /> 
     <bindableApplicationBar:BindableApplicationBar.MenuItems> 
      <bindableApplicationBar:BindableApplicationBarMenuItem 
       Text="{Binding Path=LocalizedResources.AppBarAboutText, Source={StaticResource LocalizedStrings}}" 
       Tap="Info_OnTap" /> 
     </bindableApplicationBar:BindableApplicationBar.MenuItems> 
    </bindableApplicationBar:BindableApplicationBar> 
</bindableApplicationBar:Bindable.ApplicationBar> 

和这里的,我有我的.xaml.cs文件的处理程序之一:

private void Info_OnTap(object sender, GestureEventArgs e) 
{ 
    _about.Show(); 
    Debug.WriteLine("INFO ON_TAP"); 
} 

无“INFO ON_TAP“行是我点击MenuItem时写的。

它有什么问题?

+0

如果你把breackpoint是你的方法,你传递? – MatDev8

+0

是的,该方法甚至没有被称为 – StepTNT

+0

为什么你不使用点击或命令?而且我认为当你点击按钮时,如果你点击屏幕上的按钮,它不起作用,但通过。 – MatDev8

回答

0

这不是你将如何使用BindableApplicationBar。 BindableApplicationBarButton从FrameworkElement继承(因此具有Tap事件)以支持DataContext和Bindings; Tap事件没有被触发,因为没有BindableApplicationBarButton被触发,所以没有BindableApplicationBarButton在屏幕上 - 这只是一个创建ApplicationBarIconButton的包装,但没有将Tap事件处理程序传递给它(ApplicationBarIconButton,顺便说一句,只有一个事件 - 点击)。 BindableApplicationBarMenuItem也是如此。 BindableApplicationBar与Commands最适合。

查看更多在评论中源:BindableApplicationBar @ codeplex

这里是(一些)您的选择:反应按钮BindableApplicationBarButton的

  • 使用Command属性
  • 在XAML定义BindableApplicationBar后点击,连接到点击事件中它创建的ApplicationBarIconButtons 后面的代码
  • 使用BindableApplicationBar代码(open源),并改变它以获得您场景中的最佳体验
0

您可以尝试Cimbalino Toolkit AppBar ...更强大,更易于使用!

例如:

<i:Interaction.Behaviors> 
     <cimbalinoBehaviors:MultiApplicationBarBehavior 
      SelectedIndex="{Binding SelectedIndex, ElementName=MainInfo, Converter={StaticResource HomeMenuConverter}}" > 

      <cimbalinoBehaviors:ApplicationBar Opacity="0.5" 
               IsMenuEnabled="{Binding IsLoading, Converter={StaticResource NegativeBooleanConverter}}"> 


       <cimbalinoBehaviors:ApplicationBarIconButton 
        IsVisible="{Binding IsAuthenticated}" 
        IsEnabled="{Binding IsLoading, Converter={StaticResource NegativeBooleanConverter}}" 
        Command="{Binding GetFavorites, Mode=OneTime}" 
        IconUri="/Assets/appbar.sync.rest.png" Text="{Binding Labels.Translation.Refresh, Source={StaticResource LabelsManager}}" /> 
       <cimbalinoBehaviors:ApplicationBarIconButton 
        IsVisible="{Binding SelectionMode, Converter={StaticResource NegativeBooleanConverter}}" 
        IsEnabled="{Binding IsLoading, Converter={StaticResource NegativeBooleanConverter}}" 
        Command="{Binding SetSelectionMode, Mode=OneTime}" 
        IconUri="/Assets/ApplicationBar.Select.png" Text="{Binding Labels.Translation.Select, Source={StaticResource LabelsManager}}" /> 
       <cimbalinoBehaviors:ApplicationBarIconButton 
        IsVisible="{Binding SelectionMode}" 
        IsEnabled="{Binding IsLoading, Converter={StaticResource NegativeBooleanConverter}}" 
        Command="{Binding DeleteFavorites, Mode=OneTime}" 
        IconUri="/Assets/ApplicationBar.Delete.png" Text="{Binding Labels.Translation.Delete, Source={StaticResource LabelsManager}}" /> 

       <cimbalinoBehaviors:ApplicationBarIconButton 
        IsVisible="{Binding SelectionMode}" 
        IsEnabled="{Binding IsLoading, Converter={StaticResource NegativeBooleanConverter}}" 
        Command="{Binding SetSelectionMode, Mode=OneTime}" 
        IconUri="/Assets/ApplicationBar.Cancel.png" Text="{Binding Labels.Translation.Cancel, Source={StaticResource LabelsManager}}" /> 

      </cimbalinoBehaviors:ApplicationBar> 
     </cimbalinoBehaviors:MultiApplicationBarBehavior> 
    </i:Interaction.Behaviors> 

https://github.com/Cimbalino/Cimbalino-Phone-Toolkit