C# 如何在Silverlight上为MVVM支持多个CommandParameter绑定

C# 如何在Silverlight上为MVVM支持多个CommandParameter绑定,c#,silverlight,mvvm,prism,mvvm-light,C#,Silverlight,Mvvm,Prism,Mvvm Light,我只想从右侧选择一个收件人,然后用MVVM将其传送到左侧。 (我缺少'sender object',我的命令不是RoutedCommand)。 您在这方面的最佳做法是什么? 这是我的带有虚拟源代码的XAML 为了实现这个目标,我需要右边的ListBox的引用来删除SelectedItems。我还需要左边列表框的引用来添加这些成员 我正在传递带有CommandParameter的左侧列表框。但是ModelView不知道正确的方法 遗憾的是,Silverlight不支持多重绑定,但这里有一个解决方

我只想从右侧选择一个收件人,然后用MVVM将其传送到左侧。

(我缺少'sender object',我的命令不是RoutedCommand)。

您在这方面的最佳做法是什么?

这是我的带有虚拟源代码的XAML

为了实现这个目标,我需要右边的ListBox的引用来删除SelectedItems。我还需要左边列表框的引用来添加这些成员

我正在传递带有CommandParameter的左侧列表框。但是ModelView不知道正确的方法

遗憾的是,Silverlight不支持多重绑定,但这里有一个解决方案。但我需要为此编写一些转换器

也许通过IoC我可以传递一些引用,但我不想破坏MVVM结构

我知道肯定还有其他的解决办法,我正在寻找。告诉我你的建议吧

一些注意事项:我正在使用微软的Prisim的DelegateCommand来实现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>


谢谢

我会选择多重绑定和转换器。是的,您需要编写一些代码,但由于Silverlight中没有内置代码,因此无论如何您都必须编写一些代码。最后我会这样做,但我想知道其他方法,可能有一种本机方法或更好的方法:)为什么不在视图模型中使用两个集合(例如AvailableRecipients和SelectedRecipients)?绑定到按钮的命令必须从一个集合中删除项目并将其插入另一个集合。太棒了!我想在这里说,这件事是可能的,为什么不呢?我真蠢。我是MVVM的新手,告诉我更多。我已经有了这些收藏品。我正在尽快申请。