无法将LongListSelector.SelectedItem绑定到MVVM属性

使用Visual Studio 2013和Window Phone 8 SDK我无法获取LongListSelectorSelectedItem属性以正确绑定到MVVM属性。

它似乎与控件中包含的错误之前存在的错误相同,但它被标记为已修复。 http://silverlight.codeplex.com/workitem/9360

是否有其他人遇到此问题并知道修复/更新版本?

我目前正在使用解决方法背后的代码

  private void LongListSelector_SelectionChanged(object sender, SelectionChangedEventArgs e) { LongListSelector s = sender as LongListSelector; var vm = DataContext as ViewModel.MainViewModel; Debug.Assert(vm != null); vm.SelectedLegislator = s.SelectedItem; } 

要获取选择到ViewModel的项目,我总是使用LongListSelector扩展 – 代码可以在这里找到: https ://gist.github.com/Depechie/7524630

你需要做的是将它添加到LongListSelector的XAML:

  

viewmodel上的命令将在LongListSelector上接收项源的对象类型

使用行为

 public class LongListSelectedItemBehavior : Behavior { public object SelectedItem { get { return (object)GetValue(SelectedItemProperty); } set { SetValue(SelectedItemProperty, value); } } // Using a DependencyProperty as the backing store for SelectedItem. This enables animation, styling, binding, etc... public static readonly DependencyProperty SelectedItemProperty = DependencyProperty.Register("SelectedItem", typeof(object), typeof(LongListSelectedItemBehavior), new PropertyMetadata(null)); protected override void OnAttached() { base.OnAttached(); if (AssociatedObject != null) { AssociatedObject.SelectionChanged += AssociatedObject_SelectionChanged; } } protected override void OnDetaching() { base.OnDetaching(); if (AssociatedObject != null) { AssociatedObject.SelectionChanged -= AssociatedObject_SelectionChanged; } } private void AssociatedObject_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e) { SelectedItem = AssociatedObject.SelectedItem; } 

和XAML