繁体   English   中英

LongListMultiSelector阻止所选项目的手势事件

[英]LongListMultiSelector blocks gesture events for selected items

在以下XAML中,当在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>

基本上我正在寻找的是一种类似于标准Mail应用程序的行为,在选择了一堆字母后,他们仍然接收Tap事件,因为我仍然可以扩展/折叠它们中的任何一个(除了在我的情况下它是一个简单的TextBlock s而不是ExpanderView s)。

在我的机器上正常工作。 当我点击这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的根控件上。

该工具包使用此sig来响应tap。

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

该示例定义了与。中的LongListMultiSelector构造分开的datatemplate

<phone:PhoneApplicationPage.Resources>

部分并将其引用为

ItemTemplate="{StaticResource EmailItemTemplate}.

有关示例,请参阅工具包中的LongListMultiSelectorSample.xaml。 样本实际上是不完整的,一开始可能会令人困惑。 只需忽略BuddiesPivotItem和GridModeItem,除非您想完成它并使整个过程完成。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM