0

WPF4アプリケーションでMVVMを使用しています。

私のアプリケーションでは、ViewModelにObservableCollection ProductsListプロパティ、ICommandSaveコマンドプロパティがあります。Productクラスには、ProductNameとPriceの2つのプロパティがあります。

UIでは、ウィンドウのDataContextがViewModelにバインドされ、xamDataGridのDataSourceがProductsListプロパティにバインドされ、ボタンがSaveプロパティにバインドされます。

ユーザーは、ビューの[価格]列に変更を加えます。

私がやろうとしているのは、アプリケーションが最初に起動したときに、保存する新しいものがないため、[保存]ボタンが無効になっていることです。製品の価格の変更など、ユーザーがレコードに変更を加えるとすぐに、[保存]ボタンが有効になります。

私の質問は次のとおりです。xamDataGridには、入札されたデータが変更されたことを示すプロパティがありますか(データグリッドがダーティです)?そのようなプロパティがある場合は、これをViewModelのプロパティ(たとえば、bool DataChanged)にバインドし、このDataChangedプロパティを使用して、[保存]コマンドのCanExcuteMethodを設定し、[保存]ボタンを有効にします。

または、この機能を実現する他の方法はありますか?

ありがとうございました。

4

1 に答える 1

0

XamDataGrid は、データ ストアを認識しないため、またはそれ自体以外の別のソースからデータが変更された場合に UI コントロールによって追跡されるべきではないため、このプロパティを公開しません。

View 内のコントロールに依存している場合、ViewModel は View に依存しているため、同じ VeiwModel で別の View を使用できなくなる可能性があるため、ViewModel でこれを追跡するのが最善の方法です。

これを行うには、グリッドをそれにバインドし、ViewModel のデータが変更されたときにその値を設定する場合と同様に、ViewModel にプロパティを作成します。

于 2012-08-26T13:55:11.953 に答える