0

右側から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>

ありがとうございました

4

0 に答える 0