0

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

谢谢

4

0 回答 0