我希望能够:
所以我选择了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 的SelectionChanged
。这不是我想要的。
问题是: 当用户点击 LongListMultiSelector 中的一项时,我该如何执行某些操作?感谢。
答案 0 :(得分: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;
}
仍然有更改选择
private void longlist_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
}
答案 1 :(得分:0)
使用LongListMultiSelector后,添加或删除项目时会触发SelectionChanged事件。如果你想在不管添加/删除项目的情况下执行操作,我都设法这样做(对于一个简单的字符串):
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
}
应该在点击时单独选择项目时运行,但是当同时添加/删除更多项目时此方法会出现问题 - 如果需要,那么您也应该处理它。