2013-12-09 76 views
0

我想要:如何处理LongListMultiSelector的选定项目?

  • 当用户点击一个项目时打开邮件。
  • 和删除多封电子邮件,当用户选择多个邮件

所以我选用LongListMultiSelector

在建LongListSelector,我处理SelectionChanged事件是这样的:

private void mails_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    var selectedItem = mailsLongListSelector.SelectedItem as Mail; 

    if (selectedItem == null) 
     return; 
    ... 
    mailsLongListSelector.SelectedItem = null; 
} 

正是我想要像wptoolkit的LongListMultiSelector该功能。就像您选择一封电子邮件打开并阅读它一样。

LongListMultiSelector's SelectionChanged发生在您点击项目左侧并出现复选框时。这不是我想要的。

的问题是: 当用户点击LongListMultiSelector的一个项目我怎么能执行的东西吗?谢谢。

回答

3

你可以试试这个。如果这是你LongListSelector

<tkit:LongListMultiSelector Name="longlist" SelectionChanged="longlist_SelectionChanged"> 
    <tkit:LongListMultiSelector.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding Title}" FontSize="32" Tap="TextBlock_Tap"/> 
     </DataTemplate> 
    </tkit:LongListMultiSelector.ItemTemplate> 
</tkit:LongListMultiSelector> 

,它有一个ItemTemplate,你可以检测项的水龙头。

private void TextBlock_Tap(object sender, System.Windows.Input.GestureEventArgs e) 
{ 
    var itemTapped = (sender as FrameworkElement).DataContext as Book; 
} 

而且还有一旦您使用LongListMultiSelector,SelectionChanged事件被触发时,项目被添加或删除一个选择改变

private void longlist_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 

} 
+0

哈,有时候我们的心太过分了。我有一个小时想着如何处理这个问题。多么愚蠢的我:\ ...谢谢igrali – user2970840

+0

首先TextBlock_Tap事件发生,但它不起作用,因为longlist_SelectionChanged事件处理所有的行动。我该如何解决这个问题? –

+0

如果至少选择了一个项目,则textblockTap事件无法处理 - longlist_SelectionChanged事件处理所有内容。 –

0

。如果要执行的操作,无论项目添加/删除,我已经成功地做这样的(一个简单的字符串):

private void longlist_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    string selectedItem = String.Empty; 
    if (e.AddedItems.Count > 0) selectedItem = e.AddedItems[0] as string; 
    else selectedItem = e.RemovedItems[0] as string; 
    MessageBox.Show(selectedItem); // do your work 
} 

而项都受到窃听分别选择它应该运行,但这种方法会在更多项目同时添加/删除时出现问题 - 如果您需要它,那么您也应该处理这个问题。

相关问题