C# LongListMultiSelector阻止选定项目的手势事件
在以下XAML中,当在C# LongListMultiSelector阻止选定项目的手势事件,c#,xaml,events,windows-phone-8,C#,Xaml,Events,Windows Phone 8,在以下XAML中,当在LongListMultiSelector中选择任何TextBlock时,该TextBlock停止接收Tap事件(和任何其他手势事件),但当我再次点击它时,它将变为未选择。如何更改此行为,使TextBlock始终响应Tap,而不管其选择状态如何 <toolkit:LongListMultiSelector ItemsSource="{Binding Items}"> <toolkit:LongListMultiSelector.ItemTempla
LongListMultiSelector
中选择任何TextBlock
时,该TextBlock
停止接收Tap
事件(和任何其他手势事件),但当我再次点击它时,它将变为未选择。如何更改此行为,使TextBlock
始终响应Tap
,而不管其选择状态如何
<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>
基本上,我所寻找的是一种类似于标准邮件应用程序的行为,在选择了一堆信件后,他们仍然会收到
点击事件,因为我仍然可以展开/折叠其中的任何一个事件(除了在我的情况下,它是一个简单的文本块而不是展开视图。在我的机器上工作正常。当我点击这3项时,我会在调试日志中得到预期的消息
private void主页\u已加载(对象发送方、路由目标方)
{
this.DataContext=“Foo Bar Baz”.Split(“”);
}
私有void TextBlock_Tap_1(对象发送者、GestureEventArgs e)
{
Debug.WriteLine(“TextBlock_Tap_1”);
}
根据您的场景,WP8公开了可能被证明有用的属性。设置UseOptimizedManipulationRouting=false会导致LongListSelector、Pivot和其他控件不会吞咽嵌套控件的事件。可以在LongListSelector.ItemTemplate的根控件上进行设置 工具箱使用此sig响应点击
private void OnItemContentTap(object sender, System.Windows.Input.GestureEventArgs e)
该示例定义了与中LongListMultiSelector构造分离的datatemplate
<phone:PhoneApplicationPage.Resources>
有关示例,请参见工具箱中的LongListMultiSelectorSample.xaml。这个样本实际上是不完整的,一开始可能会让人困惑。只需忽略BuddiesPivotItem和GridModeItem,除非您想完成它并使整个过程正常运行。只需在LongListMultiSelector
上尝试将UseOptimizedManipulationRouting
设置为false,但没有任何帮助。所选文本块仍然未被选中,而不是响应点击。我对LongListSelector
没有问题,因为无法在那里选择项目。在LongListMultiSelector
中,当项目未被选中时,它会按应有的方式响应点击,我在控制台中看到输出。但是,一旦它被选中,它的点击响应将变为未被选中,而不是启动它的事件侦听器,这是我想要摆脱的行为。也许我用错了词,在“selected item”下面,我指的是在LongListMultiSelector
中前面有复选框的项目。
ItemTemplate="{StaticResource EmailItemTemplate}.