Windows phone 8 Caliburn.Micro无法绑定到LongListSelector

Windows phone 8 Caliburn.Micro无法绑定到LongListSelector,windows-phone-8,caliburn.micro,Windows Phone 8,Caliburn.micro,带有Caliburn.Micro 2.0.1的Windows phone 8无法绑定到LongListSelector。对于Caliburn,尝试将项绑定到可见性属性。 这是XAML <phone:LongListSelector x:Name="Items" ItemTemplate="{StaticResource MyItemTemplate}"> </phone:LongListSelector> 这是有道理的,因为LongListSelecto

带有Caliburn.Micro 2.0.1的Windows phone 8无法绑定到LongListSelector。对于Caliburn,尝试将项绑定到可见性属性。 这是XAML

<phone:LongListSelector
    x:Name="Items"
    ItemTemplate="{StaticResource MyItemTemplate}">
</phone:LongListSelector>

这是有道理的,因为LongListSelector不在windows Phone控件的ConventionManager列表中。您必须将其添加为该控件的自定义约定。否则,只需正常绑定…

您试图使用的约定是Caliburn。Micro已为
ItemsControl
设置,不幸的是,它似乎没有继承自
ItemsControl
。奇怪的是,事实并非如此,所以你会认为一切都会正常工作

LongListSelector
的一个非常基本的约定可以添加如下内容

ConventionManager.AddElementConvention<LongListSelector>(LongListSelector.ItemsSourceProperty, "DataContext", "Loaded");

如果您使用的是需要后两个属性的任何其他功能,则这一点会更好。第一个约定只是使用锅炉板参数。

因此它不是一个bug。如何将此控件添加到列表中?在此约定后,项绑定工作,但选定项属性未绑定。还缺少什么?LongListSelector.SelectedItem似乎不是依赖属性,因此它实际上无法绑定到,有关详细信息,请参阅。哦。。。还有一个例外情况:)是的,很遗憾有很多控件属于例外情况。@NigelSampson我找到了另一个解决方案:
ConventionManager.AddElementConvention(LongListSelector.ItemsSourceProperty,“SelectedItem”,“SelectionChanged”)。你能告诉我你的方式有什么不同吗?看见
System.Windows.Data Error: 'MS.Internal.Data.DynamicValueConverter' converter failed to convert value 'Caliburn.Micro.BindableCollection`1[Checklists.ViewModels.ItemsPageViewModel+Item]' (type 'Caliburn.Micro.BindableCollection`1[CLS.ViewModels.ItemsPageViewModel+Item]'); BindingExpression: Path='Items' DataItem='CLS.ViewModels.ItemsPageViewModel' (HashCode=38524289); target element is 'Microsoft.Phone.Controls.LongListSelector' (Name='Items'); target property is 'Visibility' (type 'System.Windows.Visibility').. System.InvalidOperationException: Can't convert type Caliburn.Micro.BindableCollection`1[CLS.ViewModels.ItemsPageViewModel+Item] to type System.Windows.Visibility.
   at MS.Internal.Data.DefaultValueConverter.Create(Type sourceType, Type targetType, Boolean targetToSource)
   at MS.Internal.Data.DynamicValueConverter.EnsureConverter(Type sourceType, Type targetType)
   at MS.Internal.Data.DynamicValueConverter.Convert(Object value, Type targetType, Object parameter, CultureInfo culture)
   at System.Windows.Data.BindingExpression.ConvertToTarget(Object value). 
ConventionManager.AddElementConvention<LongListSelector>(LongListSelector.ItemsSourceProperty, "DataContext", "Loaded");
ConventionManager.AddElementConvention<LongListSelector>(LongListSelector.Items‌​SourceProperty, "SelectedItem", "SelectionChanged");