2

私のこのプロジェクトでは、無料のWPF DataGridを使用する必要があります(Infragisticsライブラリは悪いと思いましたが、この後で取り戻します)。

DataGridには、selectedRowsのリストを取得するためのクリーンなMVVMフレンドリーな方法がないようです。

データバインドできますSelectedItem="{Binding SelectedSourceFile}"が、これは最初に選択された行のみを表示します。選択したすべての行を取得できる必要があります。

MVVMを介してそれをきれいに行うためのヒントはありますか?

4

2 に答える 2

1

このような状況で作成した回避策を使用してOneWayToSource、読み取り専用の依存関係プロパティのバインディングを実行できます。私はそれを呼びますPushBinding

私はここでそれについてブログ投稿をしました:ReadOnly依存関係プロパティのOneWayToSourceバインディング

バインドするSelectedItemsには、これを行うことができます

<DataGrid ItemsSource="{Binding ...}">
    <pb:PushBindingManager.PushBindings>
        <pb:PushBinding TargetProperty="SelectedItems" Path="MySelectedItems"/>
    </pb:PushBindingManager.PushBindings>
</DataGrid>

そして、ViewModelのプロパティ

public IList MySelectedItems
{
    get;
    set;
}

興味がある場合は、PushBindingInStyleDemo.zipPushBindingを使用してデモプロジェクトをダウンロードできます。

于 2012-06-01T16:36:38.247 に答える
1

SelectedItemsプロパティへの双方向バインディングを行う方法を説明するブログ投稿がここにあります。この例ではListBoxを使用していますが、どちらもMultiSelectorから派生しているため、DataGridでも同様に機能するはずです。

ブログ投稿にはダウンロード可能なサンプルコードがあります。

于 2012-06-01T16:41:36.073 に答える