正確な設定に応じて、これに対処する簡単な方法がいくつかあります。
ユーザーが入力するテキストボックスだけがあり、インタラクティブな方法でデータをフィルタリングする場合は、ビュー* の背後にあるコードでTextChangedイベントハンドラーを使用できます。そのイベント ハンドラーから、viewmodel によって公開されたコマンドを呼び出すことができます。そのコマンドは、検索テキストを入力として受け取り、それに応じてデータをフィルター処理できます。もちろん、viewmodel はアプリケーション設定のデータ オブジェクトにもアクセスできますが、私はそれをコマンドのパラメーターとして使用する、より直接的で宣言的なアプローチを好みます。
テキストボックスがあり、ボタンを介して検索/フィルターが開始される場合、ボタンがバインドされているビューモデルからコマンドを公開するだけで、コマンドパラメーターとして要素バインディングを使用してテキストを渡すことができますコマンド。
これらの方法のいずれかを使用すると、ビューモデルの検索/フィルター コードは非常にテストしやすくなります。通常、UI でコードを単体テストしないため、TextChanged ハンドラーのコードについて心配する必要はありません。また、インタラクティブな検索を使用している場合、Reactive Extensionsはビューモデルへの呼び出しを抑制する便利な方法を提供するため、非常に便利です。
*自分自身を絶対的な純粋主義者と見なす一部の人々は、ビュー内のコードを考えると震えますが、それが純粋に UI/表示関連のコードであれば、それを行っても問題ありません。その後、そのインターフェイスを介してビューモデルを呼び出すことができます。