2013-01-19 49 views
3

在当任何TextBlockLongListMultiSelector被选择时,即停止TextBlock recieving Tap事件(和任何其它的手势事件),而是变成未被选择,当我再次点击了下列XAML。如何更改此行为,使TextBlock始终对Tap作出响应,而不管它是否处于选择状态?LongListMultiSelector块手势事件选定项目

<toolkit:LongListMultiSelector ItemsSource="{Binding Items}"> 
    <toolkit:LongListMultiSelector.ItemTemplate> 
     <DataTemplate> 
      <!-- When TextBlock is selected, Debug_WriteLine_Tapped does not get called --> 
      <TextBlock Text="{Binding name}" Tap="Debug_WriteLine_Tapped" /> 
     </DataTemplate> 
    </toolkit:LongListMultiSelector.ItemTemplate> 
</toolkit:LongListMultiSelector> 

基本上我寻找的是类似标准的邮件应用程序,其中,选择一串字母后,他们仍收到Tap事件,因为我仍然可以扩大/倒塌任何人(除了的行为我的情况是简单的TextBlock s而不是ExpanderView s)。

回答

0

在我的机器上正常工作。当我点击这3个项目时,我会在调试日志中看到预期的消息。

<phone:LongListSelector ItemsSource="{Binding}"> 
    <phone:LongListSelector.ItemTemplate> 
     <DataTemplate> 
      <Grid > 
       <TextBlock Text="{Binding}" Tap="TextBlock_Tap_1" /> 
      </Grid> 
     </DataTemplate> 
    </phone:LongListSelector.ItemTemplate> 
</phone:LongListSelector> 
private void MainPage_Loaded(object sender, RoutedEventArgs e) 
{ 
    this.DataContext = "Foo Bar Baz".Split(' '); 
} 

private void TextBlock_Tap_1(object sender, GestureEventArgs e) 
{ 
    Debug.WriteLine("TextBlock_Tap_1"); 
} 

根据您的情况WP8公开UseOptimizedManipulationRouting财产可能证明是有用的。设置UseOptimizedManipulationRouting = false会导致LongListSelector,Pivot和其他控件不能吞服嵌套控件的事件。一个很好的地方可以在你的LongListSelector.ItemTemplate的根控件上进行设置。

+0

刚刚尝试在'LongListMultiSelector'上设置'UseOptimizedManipulationRouting'为false,并没有帮助。选定的文本块仍然被取消选择而不是响应Tap。 – Anton

+0

我没有'LongListSelector'的问题,因为在这里不能选择项目。在'LongListMultiSelector'中,当item没有被选中时,它会按照它的响应来响应,并且我在console中看到输出。但一旦它被选中,它就会点击响应而不被选中,而不是触发它的事件监听器,这就是我想要摆脱的行为。 – Anton

+0

也许我在“选择的项目”下面使用了错误的单词,我的意思是一个在“LongListMultiSelector”前面有一个复选框的项目。 – Anton

0

该工具包使用此sig响应水龙头。

private void OnItemContentTap(object sender, System.Windows.Input.GestureEventArgs e) 

该示例定义在

<phone:PhoneApplicationPage.Resources> 

部和引用其从LongListMultiSelector所述的DataTemplate单​​独构建体

ItemTemplate="{StaticResource EmailItemTemplate}. 

见LongListMultiSelectorSample.xaml在工具包中的例子。该样本实际上是不完整的,可能会首先引起混淆。只要忽略BuddiesPivotItem和GridModeItem,除非你想完成它,并使整个事情工作。