2013-01-19 91 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,除非你想完成它,並使整個事情工作。