[解決済み】WPFでMVVMを使ったダイアログの扱いについて
2022-04-02 04:20:59
質問
WPFのMVVMパターンでは、ダイアログの扱いはより複雑な操作のひとつです。 ビューモデルはビューについて何も知らないので、ダイアログ通信は興味深いものになります。 私は
ICommand
を起動すると、ダイアログが表示されます。
どなたか、ダイアログからの結果を処理する良い方法をご存じないでしょうか?私は、次のようなウィンドウズダイアログについて話しています。
MessageBox
.
この方法の一つは、ダイアログが必要なときにビューが購読するイベントを viewmodel に設定することです。
public event EventHandler<MyDeleteArgs> RequiresDeleteDialog;
これはOKですが、ビューにコードが必要ということで、これは避けたいところです。
解決方法は?
1990年代のモーダルダイアログをやめて、コントロールをオーバーレイとして実装し(canvas+絶対位置)、VMに戻ってブーリアンに可視性を関連付けることを提案します。ajaxタイプのコントロールに近いものです。
これはとても便利ですね。
<BooleanToVisibilityConverter x:Key="booltoVis" />
のように
<my:ErrorControl Visibility="{Binding Path=ThereWasAnError, Mode=TwoWay, Converter={StaticResource booltoVis}, UpdateSourceTrigger=PropertyChanged}"/>
ユーザーコントロールとして実装しているものはこんな感じです。x」をクリックすると、usercontrolのコードの後ろにある行でコントロールが閉じられます。(私はViewsを.exeで、ViewModelsをdllで持っているので、UIを操作するコードについて悪い気はしません)。
関連
-
[解決済み] アセンブリから型を読み込めなかったエラー
-
[解決済み] COMExceptionエラー80040154を修復する方法は?
-
[解決済み] EF Coreのadd-migrationのビルドに失敗しました。
-
[解決済み] ファイルまたはアセンブリ 'System.Data.SQLite' をロードできませんでした。
-
[解決済み] DockPanelを空きスペースいっぱいに表示させる方法
-
[解決済み] .NET Framework 4 マルチターゲティングパックがアンインストールできない
-
[解決済み] 列挙型を文字列に変換する
-
[解決済み] Microsoft.ACE.OLEDB.12.0' プロバイダがローカルマシンに登録されていません。
-
[解決済み] MVVMを使ったwpfのダイアログの良し悪しは?
-
[解決済み] MVVMテンプレートの好例
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] CLSID {XXXX} を持つコンポーネントの COM クラスファクトリの取得は、次のエラーにより失敗しました: 80040154。
-
[解決済み] app.configのマッピングがないアセンブリのapp.configの再マッピングを考慮する。
-
[解決済み] C++/CLIにおけるキャレット('^')の意味は?
-
[解決済み] asp.netでWebサービスのタイムアウト時間を長くする方法は?
-
[解決済み] VB.NETで線を引く方法
-
[解決済み] データテーブルがすでに別のデータセットに属している
-
[解決済み] csilogfileは何のためにあるのですか?
-
[解決済み] 文字列から数字を抽出する正規表現
-
[解決済み] System.Timers.Timer vs System.Threading.Timer
-
[解決済み] MVVMを使ったwpfのダイアログの良し悪しは?