問題タブ [catel]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - Catel MVVM: ウィンドウ間でデータを渡す方法
こんにちは、Catel MVVM モデルのビュー モデル間でデータを送信するプロセスに苦労しています。クリックすると新しいウィンドウを開き、新しく開いたウィンドウにデータ (オブジェクト) を送信するボタンがあります。しかし、私はこれを自分で解決することができないので、私を助けてもらえますか?
私の最初のView Modelには次のものがあります。
私の場合、「SelectedStop」メソッドから結果を送信したいのですが、どうすればよいですか?
catel - Catel 4 (プレリリース)、ReSharper 8.2、.NET 4.5
ReSharper 8.2 は、.NET 4.5 をターゲットにすると、VS 2012 Update 4 の Catel 4 ビューモデルで多くのエラーを示します。Catel 4.0.0-unstable0463 がインストールされています。
ViewModelBase から派生したすべての VM で、Re# は、GetValue、SetValue、および RegisterProperty が発生するたびに「シンボルを解決できません」と表示します。WindowLogic.PropertyChanged を参照しようとすると、同じエラーが発生します。
.NET 4.5.1 を選択すると、Re# エラーがなくなります。
プロジェクトは 4.5 用に作成され、パッケージのインストールには NuGet が使用されました。
適切なバージョンの Catel を再インストールすると、.NET 4.0 もクリーンになります。
ありがとう。
-ライリー。
catel - Catel 4を使用したWPFツリービュー
Catel 4 と WPF TreeView コントロールの使用方法を教えてもらえますか? VS ソリューション エクスプローラーのようなものを作成しようとしています。ツリーの各レベルにモデルと VM を作成しました。
階層データ テンプレート (HDT) を追加し、VM の種類を DataType パラメーターに使用すると、最上位のコレクション メンバーの種類を示すツリーが表示されます。つまり、WPF は ItemsSource コレクションの型を HDT に一致させることができませんでした。モデル タイプを使用するように HDT を変更すると、TreeView は適切に動作しますが、VM は使用されません。
ありがとう。
-ライリー。
catel - StackGrid WPF デザイナーの問題
catels StackGrid を使用すると、デザイナーはすべてのコンテンツを最初のセルに表示します。
プロジェクトをコンパイルすると、デザイナー内でグリッドが適切にレンダリングされます。
再コンパイルせずに wpf デザイナーを強制的に更新する他の方法はありますか?
catel - Memento のやり直し操作を削除しますか?
私のアプリケーションでは、ユーザーは行を DataGrid に追加し、各行のプロパティを変更できます。ユーザーは行を削除することもできます。これらのアクションを元に戻したりやり直したりすることは問題なく機能しますが、ユーザーが行を追加した場合、たとえば 3 行を追加し、いくつかの値を変更してから元に戻し、行が 1 つしかない場所に戻し、新しい行を追加すると、元に戻すことができるのは非論理的です (最後に追加された行の後に新しい行が表示されます)。したがって、ユーザーが新しい行を追加すると、すべてのやり直しが削除されます。
RedoBatches を使用してすべてのやり直しの列挙を取得し、それぞれに対して Clear を実行してそれらを削除しようとしましたが、[やり直し] ボタンはまだアクティブであり、押すとこれらのアクションをやり直します。
これはこれを達成しようとする適切な方法ですか、それとも不可能ですか、それとも別の方法で行う必要がありますか?
catel - Catelで元に戻す/やり直しをサポートする状態変更ダイアログをどのように実装する必要がありますか?
ダイアログを使用すると、元に戻すとやり直しが正しく動作しません。
ダイアログを介して変更できるオブジェクト ( running
、paused
、 )の状態を示すプロパティを持つ単純なモデルがあります。stopped
何が起こるかというと、元に戻すキューで何もしていないように見えるアクションを取得したり、元に戻したりすると、オブジェクトが中間状態に復元されます。
モデル オブジェクトは、コンストラクターで memento に登録されます。ダイアログには、3 つの異なる状態のいずれかを表す 3 つのラジオ ボタンがあります。各ラジオ ボタンは、それぞれコマンドにバインドされます。各コマンドはプロパティの変更を実行します。各コマンドがオブジェクトにプロパティを直接設定するか、各コマンドが呼び出されたときにビュー モデルのインスタンス変数を設定し、Saving イベントを使用してオブジェクトを変更します。
最初のアプローチを使用する場合、ユーザーがダイアログで [OK] をクリックする前に複数のラジオボタンをクリックすると、各プロパティの変更が元に戻すキューに入れられます。ダイアログ全体をバッチにラップすることで解決しようとしましたが、その結果、状態の変更が元に戻り、オブジェクトは最終的な状態になる前の状態に復元されます。つまりstopped
、ダイアログが開く前にプロパティが設定されていて、ユーザーがラジオボタンを一時停止してから開始し、最後に[OK]を元に戻すと、プロパティがpaused
期待されるのではなくに設定されstopped
ます。
2 番目のアプローチを使用してユーザーがダイアログを開いた場合、状態を に変更し、ダイアログpaused
で [OK] をクリックします。元に戻す/やり直しは期待どおりに動作しますが、ダイアログを再度開いて [キャンセル] を選択すると、元に戻すキューにもう 1 つのアクションが追加されます。ユーザーは、元の状態に戻すために [元に戻す] を 2 回クリックする必要がありますstopped
。
したがって、私の質問は、期待される動作を得るためにこれをどのように正しく実装する必要があるかです。ダイアログ内のすべてのインタラクションではなく、各ダイアログのインタラクションを元に戻すことができるということですか?
ViewModel のコードは次のとおりです。