私は.Net 4.0を使用しており、ビューにDataGridがあります。フィルタリングを提供するために、このhttp://www.codeproject.com/Articles/42227/Automatic-WPF-Toolkit-DataGrid-Filteringを実装しました。DataGrid の ItemsSource は、カスタム オブジェクトの観察可能なコレクションです。各行には Button があり、クリックすると、選択したカスタム オブジェクトが CommandParameter を介して返されます。
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Command="{Binding Path=DataContext.DeleteMyCustomObjectCommand,RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type DataGrid}}}" CommandParameter="{Binding}" Width="20">
<Image Source="/MyThing;component/Images/delete.png" Height="16" Width="16"/>
</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
このソリューションhttp://www.codeproject.com/Articles/42227/Automatic-WPF-Toolkit-DataGrid-Filtering?msg=3342202#xx3342202xxを使用してフィルター条件を保存できるようにしたいのですが、呼び出しの1つに参照が必要ですデータグリッドへ
QueryController queryController= DataGridExtensions.GetDataGridFilterQueryController(myGrid1);
MVVM を使用しているため、ViewModel に DataGrid への参照がありません。私のコマンド実行コード(ViewModel内)は現在このようになっています
public void DeleteMyCustomObject(object param)
{
MyCustomObject m = param as MyCustomObject;
.....Deletion commands go here
Delete ボタンの CommandParameter で multibindings を使用して、現在の行からカスタム オブジェクトを返す方法と、実際の DataGrid への参照を返す方法はありますか (または、より良い解決策があります)。
どうもありがとう
ミック