問題タブ [cinch]

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.

0 投票する
2 に答える
1004 参照

wpf - MVVM とステートフル コマンド - 良いアイデアか悪いアイデアか?

MVVM の専門知識を持つ誰かが、次のことが良い考えかどうかについて意見を提供できることを期待して、ここに投稿したいと思いました。

私は、Marlon Grech の SimpleCommand クラスを含む Sacha Barber の Cinch MVVM フレームワークを使用しています。

このクラスにはなく、他のいくつかの代替クラスにはありますが、Text プロパティは、UI 要素をコマンド操作の「タイトル」にバインドするために一般的に使用できます。したがって、Text プロパティを公開するこのクラスの拡張機能を作成しました。

今、私が遭遇したのは、コマンドを使用してデバイスへの接続を切り替えるユース ケースです。これを実装するには、さまざまな方法があります (常にあるとは限りません。ソフトウェアです!)。1 つの方法は、ViewModel から複数のコマンド オブジェクトを公開することです。1 つは「切断」用、もう 1 つは「接続用」です。ビュー モデルに接続状態 (IsConnected) を示すプロパティを公開させ、ビューを Connect コマンドまたは Disconnect コマンドのいずれかに条件付きでバインドさせます。ただし、このオプションに対する私の反応は...うんざりです!

代わりに私が最初に見始めたのは、Text プロパティを提供するだけでなく、コマンド オブジェクトに INotifyPropertyChanged を実装させて、ビューモデルによってテキスト プロパティをシステム状態に応じて「接続」または「切断」に動的に変更できるようにすることでした。これにより、複数のコマンドを使用することを避け、1 つの「ToggleConnection」コマンド オブジェクトを公開するだけで済みます。

ただし、この道を歩み始めると、コマンドの状態に応じて UI を変更する必要がある、このパターンの他のバリエーションが存在する可能性があることに気付きました。たとえば、接続状態に応じてコマンドのテキストを変更するだけでなく、接続状態に応じてアイコンを変更する必要がある場所がある場合があります。そこで、INotifyPropertyChanged を実装し、'Text' と 'State' の 2 つのプロパティを公開する 'Stateful' クラスの作成を開始しました。State の型をユーザーが定義できるように、クラスをジェネリックにしました (私は通常、回避可能な場合は「オブジェクト」を使用しないことを好みます)。

私が持っている質問は... これは良い考えだと思いますか、それとも悪い考えだと思いますか? コマンドの本来の意図/設計から逸脱している可能性があります。私が見てきたことから、コマンド オブジェクトはシステムの「動詞」であるため、ステートレスであることを意図していたのが一般的である可能性があります。ルーティングされたコマンドでは、私が物事を正しく理解していれば、通常、コマンドのターゲットのみが状態を持つことが期待されます。特に、コマンドバインディングが宣言されている場所に応じて、同じコマンドが異なるハンドラーにルーティングされる可能性があるためです。

したがって、少なくともルーティングされたコマンドでは、状態は意味をなさないと考えています。

ただし、ルーティングされたコマンドは扱っていません。具体的には MVVM コマンドを扱っています。この場合、基本的にコマンドの条件付きルーティングはありません。MVVM ビューは特定のビューモデルのコマンド オブジェクトに直接バインドされ、それは実行され、ハンドラーを実行できます。

この場合、それは意味がありますか?

使用/興味がある場合に備えて、問題のコードのコピーを添付しました。

ありがとう、フィル

0 投票する
2 に答える
3255 参照

xaml - UnityにXAMLのビューを解決させる

私はMVVMから始めて、物事を理解し始めています。私は現在Cinchフレームワークを実験していますが、まだコミットしていません。
ビューの背後にあるコードでViewModelへの参照を持ち、プロパティに[Dependency]があり、セッターでUnityを使用してDataContextを正しいビューに設定することにより、ViewModelsをビューに挿入していました。きちんとしたトリックだと思いました。

アプリを単一のウィンドウとして機能させ、ビューを挿入しようとしています(複数のウィンドウを開いたり閉じたりするのではなく)ビューをWindowsからUserControlsに変更し、メインウィンドウにを追加しました。それは機能しましたが、おそらくXAMLがContainer.Resolveを使用してビューを作成しないため、ViewModelが挿入されませんでした。ビューを作成し、コードビハインドで手動で追加したときのように、[依存関係]が作成されました。 。

XAMLを介してビューを追加したり、UIアクションなどの結果としてビューが変更されたりした場合に、Unityを介してビューを取得し、魔法のように機能するように、ウィンドウを設定するにはどうすればよいですか?

0 投票する
6 に答える
11094 参照

wpf - マウスホイールをMouseBindingしてWPFとMVVMをズームインする

OK、LayoutTransform と ScaleTransform を使用して、UI 要素のグリッドをズームする方法を理解しました。私が理解していないのは、View を CTRL+MouseWheelUp\Down に応答させる方法と、コードを MVVM パターンに適合させる方法です。

私の最初のアイデアは、ZoomFactor をプロパティとして保存し、それを調整するコマンドにバインドすることでした。

私は次のようなものを見ていました:

しかし、2つの問題があります:

1) ホイールが上に移動したか下に移動したかを判断する方法はないと思います。MouseWheelEventArgs.Delta を見たことがありますが、取得方法がわかりません。

2) ビューモデルのコマンドへのバインドは、厳密にはビューのものであるため、正しくないようです。

ズームは厳密には UI View のみなので、実際のコードはコード ビハインドに入れる必要があると考えています。

皆さんはこれをどのように実装しますか?

ps、MVVMにCinchを使用して.net\wpf 4.0を使用しています。

0 投票する
3 に答える
1027 参照

c# - ライブラリまたは独自のフレームワーク?

ライブラリまたはフレームワークと独自の実装をいつ使用する必要があるか。例えば。MVVM、Cinch/MVVM Framework を使用するか、独自のコードを展開する必要がありますか?

0 投票する
1 に答える
893 参照

wpf - ビューをコンテナー MVVM WPF に挿入する

これはしばらくの間私に苦痛を与えてきました。

Prism がリージョンにビューを挿入することは知っていますが、Cinch で同様のことをビューを最初に行う方法はありますか? たとえば、実行時に任意のビューを含めることができるコンテナー (実質的に領域) があります。XAML でビューを明示的に設定したくはありません。ビューが読み込まれるため、少し面倒です。これに使用できるコンテナはありますか?そして、どうすればいいでしょうか?(Cinch 固有である必要はありません..)

ありがとう。

0 投票する
1 に答える
248 参照

wpf - CINCHSelectedItemCOMBOBOXを使用したWPF

私はシンチフレームワークv1を使用しています。パブリックプロパティ(CurrentSuppier)を公開し、そのプロパティをコンボボックスの選択されたアイテムにバインドしました..を更新した後、コンボボックスの表示がサプライヤの現在の値に変更されません..以下はいくつかのコードスニペットです。

XAMLコード:

バインドが機能するかどうかを確認するために、CurrentSupplierをTextBoxにバインドしようとしましたが、テキストボックスはCurrentSupplierプロパティの現在の値で更新されますが、コンボボックスでは機能しません。

0 投票する
1 に答える
554 参照

wpf - ビューを閉じる ViewModel コマンドの Cinch バージョン

sacha にあまりバグを与えたくないのですが、ViewModel コマンドから View を閉じる Cinch V2 の方法を知っている人はいますか?

以前は、ViewModel ベースで RelayCommand を使用して Escape キーバインド コマンド アクションを受け入れ、これを行うために View コード ビハインドで RequestClose イベントを接続しました。

0 投票する
1 に答える
226 参照

ruby - RubyでIRCbotのログイン/管理システムを実装するにはどうすればよいですか?

これはしばらくの間私を悩ませてきました。私はこのircbotを実行しており、自分以外のすべてのユーザー(および他のいくつかのコンピューター/ユーザー)からロックダウンする必要のあるコマンドがいくつかあります。

以前はそれを持っていたので、管理者専用機能へのアクセスを許可するニックネームのリストをデータベースに保存していましたが、これらの機能を切断してアクセスすると、すべてのユーザーが私のニックネームを引き継ぐ可能性があるため、これは安全ではないことがわかりました。

私が考えていた方法の1つは、「login」および「logout」関数を処理する(およびログインしたニックネームを保存する)ためのメソッドを備えたモジュールを用意することでしたが、それも面倒かもしれません。(ニックネームの変更の問題を参照してください。)

「管理者専用」機能を使用するための堅牢で安全な方法は何でしょうか。現在、DCCを使用する方法がないとします。

0 投票する
0 に答える
143 参照

wpf - CINCH V2 で WPFService を適切に拡張するにはどうすればよいですか?

私は MVVM を初めて使用します。Sacha Barber による CINCH v2 MVVM フレームワークを使用しようとしています。フレームワーク サービスの 1 つを正しい方法で拡張する方法について疑問があります。あなたの経験からアドバイスを得ることができれば幸いです。

MVVMを使用してWPFアプリを作成しています。フレームワークとして CINCH v2 を試すことにしました。私の見解では、ファイル ダイアログ ボックスを開いて、複数のファイルを選択できるようにする必要があります。CINCH には優れた UI サービスがいくつかあります。その中には、IOpenFileService インターフェイスを実装する OpenFileService があります。私の問題は、このサービスが一度に 1 つのファイルしか開かないことです。複数のファイルを開くには複数のファイルを許可する必要があります。これは、Microsoft.Win32.Openfiledialog クラスの Multiselect プロパティを使用するのと同じくらい簡単です。

そのため、フレームワークによって提供されるテスト サービスを使用できるようになることを期待して、Cinch から IOpenFileService を実装し、それを拡張する新しいインターフェイスをプロジェクトに追加しました。

次に、この新しいインターフェイスを実装し、拡張機能を追加するサービスをプロジェクトに作成しました。

この解決策は機能しますが、それがどれほど適切であるかについては疑問があります。

1.- インターフェイス プロジェクトで、Cinch ライブラリへの参照を作成する必要があります。それが問題かどうかはわかりませんが、奇妙な感じがしました

2.- これはこの問題を解決する正しい方法ですか、それとも別の方法がありますか?

アドバイスありがとうございます。

0 投票する
1 に答える
349 参照

c# - MEFedMVVM を使用して ViewModel データを取得する

現在、MEFedMVVM フレームワークを使用して ViewModel にアクセスしていますが、現在使用されている別の ViewModel からデータを取得する方法を知りたいです。これは、Cinch の使用と組み合わされています。

現在、私のタブ コントロールは次のように定義されています。

ビューが読み込まれると、メイン ウィンドウの ViewModel は次のようにセットアップされます。

MainWindow ViewModel は、以下のように構成された ViewModelBase クラス (Cinch クラス) を継承します。

今私ができるようにしたいのは、ViewModel を持つ UserControl である loginWorkspace 内のボタン クリックから、LoginViewModel から MainWindow の Views ObservableCollection に Admin タブを追加することです。