簡體   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