如何在Silverlight上支持MVVM的多个CommandParameter绑定

时间:2012-04-10 09:46:06

标签: c# silverlight mvvm prism mvvm-light

我只想从右边选择一个收件人,然后将其转移到MVVM的左侧。

(我缺少'发送者对象'我命令不是RoutedCommand)。

你最好的做法是什么?

这是我的带有虚拟源的XAML,

enter image description here

为了实现这个目标,我需要右侧的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>

谢谢

0 个答案:

没有答案