我只想从右边选择一个收件人,然后将其转移到MVVM的左侧。
(我缺少'发送者对象'我命令不是RoutedCommand)。
你最好的做法是什么?
这是我的带有虚拟源的XAML,
为了实现这个目标,我需要右侧的ListBox引用来删除SelectedItems。我还需要左侧的列表框参考来添加这些成员。
我正在使用CommandParameter传递左侧列表框。但ModelView不知道正确的。
遗憾的是,Silverlight不支持多重绑定,但这是一个解决方案http://www.scottlogic.co.uk/blog/colin/2010/05/silverlight-multibinding-solution-for-silverlight-4/。但我需要为此编写一些转换器。
也许使用IoC我可以传递一些引用,但我不想打破MVVM结构。
我知道必须有其他一些解决方案,我正在寻找它们。请告诉我你的建议。
有些说明:我正在使用Microsoft的Prisim的DelegateCommand< ListBox>用于实现ICommand的。我知道有些人使用GalaSoft的RelayCommand。他们的实现是一样的。
<ListBox x:Name="listBoxRecipients" MinHeight="80"
SelectedItem="{Binding SelectedMembers,Mode=TwoWay}"
ItemsSource="{Binding Path=AvailableRecipients}"
SelectionMode="Multiple">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel HorizontalAlignment="Stretch" Orientation="Horizontal">
<Image Source="AHBSBus;component/images/arrivedPatients.png" MaxHeight="15"/>
<HyperlinkButton Content="{Binding DESCRIPTION}"
Command="{Binding SelectSingleCommand}"
CommandParameter="{Binding ElementName=listBoxSelection}"
VerticalAlignment="Top" HorizontalContentAlignment="Left" Foreground="#FF0F7D43" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
谢谢