Caliburn.Micro中的ListPicker Message.Attach错误

Ale*_*oto 5 windows-phone-7 caliburn.micro listpicker

我在WP7上有以下XAML代码:

<toolkit:ListPicker x:Name="ListPickerBwFactors" ItemsSource="{Binding BwFactors}" 
                            cal:Message.Attach="[Event SelectionChanged]=[Action ChangeBinarizeFactor(ListPickerBwFactors.ItemSelected)]">
</toolkit:ListPicker>
Run Code Online (Sandbox Code Playgroud)

我收到错误:Target必须是FrameworkElement或CollectionViewSource

我想要做的就是从ListPicker传递给我的VM,SelectedItem.我究竟做错了什么 ?

Nig*_*son 3

WP7 上的 Silverlight 当前版本基于 Silverlight 3,主要限制之一是您只能绑定到 FrameworkElement 或 CollectionViewSource 上的依赖属性(而不是 WPF 中的 DependencyObject)。

您看到这段代码出现错误的原因是,Message.Attach 附加的依赖属性在幕后使用了 Behaviours(特别是 ActionMessage),它们不是 FrameworkElements。

Caliburn 正在尝试设置从 ListPickerBwFactors.ItemSelected 到 ActionMessage 参数的绑定,但失败。这基本上意味着 Caliburn 中的参数目前没有多大用处。您需要将 SelectedItem 绑定到 ViewModel 上的属性。

好的一面是,WP7 的“Mango”版本会将手机上的 Silverlight 更新到 4,解决了这个问题。