右側から1人の受信者を選択して、MVVMで左側に転送したいだけです。
(「送信者オブジェクト」がありません。コマンドは RoutedCommand ではありません)。
それに関するあなたのベストプラクティスは何ですか?
これがダミーソースを使用した私のXAMLです。
この目標を達成するには、SelectedItems を削除するために右側の ListBox の参照が必要です。これらのメンバーを追加するには、左側のリストボックスの参照も必要です。
左のリストボックスに CommandParameter を渡しています。しかし、ModelView は正しいものを知りません。
残念ながら、Silverlight ではマルチバインドはサポートされていませんが、解決策はhttp://www.scottlogic.co.uk/blog/colin/2010/05/silverlight-multibinding-solution-for-silverlight-4/です。しかし、そのためにはいくつかのコンバーターをコーディングする必要があります。
IoC を使用すると、いくつかの参照を渡すことができるかもしれませんが、MVVM 構造体を壊したくありません。
他にも解決策があるに違いないことはわかっています。それらを探しています。アドバイスを教えてください。
いくつかのメモ: ICommand を実装するために、Microsoft の Prisim の DelegateCommand< ListBox > を使用しています。一部の人々が 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>
ありがとうございました