私はまだwpfとMVVMに少し慣れていません。そのパターンを壊さずに解決策をコーディングしようとしています。私は 2 つ (まあ 3 つですが、この質問の範囲では 2 つだけ) を持っていDataGrid
ます。1 つの行をダブルクリックし、そのデータを 2 番目の行にロードしますDataGrid
(理想的には、データをロードする 2 番目のスレッドをスピンアップします)。これまでのところ、行をダブルクリックするとウィンドウがポップアップ表示されます。イベントのコードを xaml の分離コードに挿入します。私には、それは非常に窓のように思えます。どういうわけか、私はそれがパターンを大きく壊しているように感じます。
private void DataGrid_MouseDoubleClick(object sender, System.Windows.Input.MouseButtonEventArgs e) {
if (popDataGrid.SelectedItem == null) {
return;
}
var selectedPopulation = popDataGrid.SelectedItem as PopulationModel;
MessageBox.Show(string.Format("The Population you double clicked on has this ID - {0}, Name - {1}, and Description {2}", selectedPopulation.populationID, selectedPopulation.PopName, selectedPopulation.description));
}
これはコード ビハインドのイベントのコードで、xaml のグリッド定義は次のとおりです。
<DataGrid ItemsSource="{Binding PopulationCollection}" Name="popDataGrid"
AutoGenerateColumns="False" RowDetailsVisibilityMode="VisibleWhenSelected"
CanUserAddRows="False" Margin="296,120,0,587" HorizontalAlignment="Left" Width="503" Grid.Column="1"
MouseDoubleClick="DataGrid_MouseDoubleClick">
</DataGrid>
このコードは MainWindowViewModel に入れる必要があると考えています。だから私はコマンドを作成しようとしています:
public ICommand DoubleClickPopRow { get { return new DelegateCommand(OnDoubleClickPopRow); }}
および同じイベント ハンドラー:
private void OnDoubleClickPopRow(object sender, MouseButtonEventArgs e) {
}
しかし、ICommand
は を返すときに例外をスローしていますDelegateCommand(OnDoubleClickPopRow)
。
ええと、引数の数が一致していないことは明らかです。何か間違ったことをしていることはわかっていますが、それが何であるかはよくわかりません。これについては引き続き調査しますが、皆様のご協力をいただければ幸いです。