ViewModelにバインドする必要がある、Viewに計算されたプロパティがあります。私はWPFを使用していると、自己計算するバインド可能なプロパティ(依存プロパティ)を作成する方法がないようです。ビューの状態が時間を要するために変化するたびに計算を実行する必要はありません。私はViewModelが結果を必要とするとき、すなわちそれが閉じるときに計算をしたい。ViewModelは、ビューから必要なデータを要求する方法を教えてください。
答えて
は、上記のあなたのコメントに基づいて、私は、暗号化されたデータが含まれますConverter
あなたのViewModelを使用して、ビューへの結合は読みやすい何かに変換コンバータを使用していますでしょう。データをViewModelに保存するときは、コンバータのConvertBack
メソッドを使用してデータを再度暗号化します。
<TextBox Text="{Binding EncryptedAccountNumber,
Converter={StaticResource DecryptTextConverter}}" />
public class DecryptTextConverter: IValueConverter
{
public object Convert(object value, Type targetType,
object parameter, CultureInfo culture)
{
// Implement decryption code here
return decryptedValue;
}
public object ConvertBack(object value, Type targetType,
object parameter, CultureInfo culture)
{
// Implement encryption code here
return ecryptedValue;
}
}
暗号化コードは、時間がかかる場合は、ごUpdateSourceTrigger=Explicit
を設定し、手動で保存]ボタンをクリックしたときに、ソースの更新をトリガします。
純粋なMVVMで私がやっているとは思えません。私はそのように始めた。まれな使用例では、ユーザーからの入力を集計し、集計されたデータをすべてではなくビュー・モデルに戻すユーザー・コントロールを設計しました。これらの状況はまれであり、すべてセキュリティを処理します。これはおそらく最良の答えですので、私はそれを答えとしてマークしますが、実際には私の問題には合致しません。 *一息*私はまだWindowsフォーム/ 2つの層の考え方にこだわっています。 – Jordan
また、複数のフィールドが暗号化されています(かなり重い)。 – Jordan
私は顧客のセキュリティに関して言えば、(特定のモジュール内の)「SecureStrings」が全面的に見ています。 – Jordan
これは私のソリューションです。 ICommand
と同じように動作しますが、ビューはデリゲート(CalculationDelegate
)を提供し、ビューモデルはCanExecute
とExecute
を呼び出します。その純粋でないMVVMが動作します。
public interface ICalculationProvider<TResult>
{
event EventHandler CanExecuteChanged;
Func<TResult> CalculationDelegate { get; set; }
bool CanExecute();
TResult Execute();
bool TryExecute(out TResult a_result);
}
ここで私がやっていることは純粋なMVVMではないので、レイチェルの答えは正しいとマークしています。
- 1. ユーザーにグループメンバーシップを要求する方法を教えてください。
- 2. ポイントから消える方法を教えてください。
- 3. 誰かにコマンドを使用する役割が必要になる方法を教えてください。
- 4. データをコンポーネントからエバーにルーティングする方法を教えてください。
- 5. Firebaseデータベースからデータをフィルタリングする方法を教えてください。
- 6. openssl_encryptを入力して必要なブロックサイズにする方法を教えてください。
- 7. すべてのリダイレクトを特定のスプレークライアントに要求する方法を教えてください。
- 8. Ctrl + Zを押して入力を要求する方法を教えてください。
- 9. Arduinoに必要な時間に毎日タスクを実行させる方法を教えてください。
- 10. ページから要素を抜け出ないようにする方法を教えてください。
- 11. 行要素を幅全体にする方法を教えてください。
- 12. JMenu要素をクリックする方法を教えてください。
- 13. プライベートフィードに接続するときにNugetに認証を要求する方法を教えてください。
- 14. ディープ・ラーニング・モデルに必要なレイヤの種類を特定する方法を教えてください。
- 15. PostgreSQLで必要なタイムゾーンを明確に区別する方法を教えてください。
- 16. MEFにこのインターフェイスに必要なタイプを教えてください。
- 17. WCF要求を複数のWorkflowインスタンスと相関させる方法を教えてください。
- 18. このジオコード要求を変数に割り当てる方法を教えてください。
- 19. Tornado Webサーバーが(Djangoの)ローカル要求のみを提供する方法を教えてください。
- 20. この投稿要求をRailsに保護する方法を教えてください。
- 21. (インライン)テレグラムロボットが場所のアクセス許可を再度要求する方法を教えてください。
- 22. ユーザーがフェッチ要求の結果を検索する方法を教えてください。
- 23. LinuxでJava Desktop APIに必要なライブラリを見つける方法を教えてください。
- 24. PHPで必要な価値を手軽に得る方法を教えてください。
- 25. プッシュ/プッシュ要求を行うときにgit bashにパスワードを尋ねる方法を教えてください。
- 26. EXC_BAD_ACCESSからの復旧方法を教えてください。
- 27. $ .ajax()から取得した要素にCSSプロパティを与える方法を教えてください。
- 28. StackOverflowデータへのアクセス方法を教えてください。
- 29. 不正なcsvデータを解析する方法を教えてください。
- 30. アプリはサーバーから小さなチャンクでデータを取得する方法を教えてください。
コードを入力してください。 –
あなたのViewModelにはどのような種類のデータが必要ですか? ViewModelsはViewについて何も知る必要がないので、達成しようとしているものの代替案があると思います。 – Rachel
@Rachel、暗号化されたアカウント情報。 – Jordan