我只想从右侧选择一个收件人,然后使用 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>
谢谢