問題タブ [reactiveui]
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.
wpf - ReactiveUI の生産準備は整っていますか?
プロダクション コードで Reactive UI を使用する可能性を調べてきました。一部の機能は非常に魅力的ですが、このライブラリに依存することに懸念があります。これらには以下が含まれます:
風変わりなネーミングと慣習。たとえば、小文字で始まる保護されたメンバーであり、
RaiseAndSetIfChanged
メソッドはアンダースコアで始まるプライベート メンバーに依存します。Paul Betts (ReactiveUI の作成者) が Ruby のバックグラウンドを持っていることは理解しています。ただし、(Stylecop による) 標準の命名が私のプロジェクト全体に適用されるため、これは私にとって実際の問題を引き起こします。強制されなかったとしても、これが原因でネーミングに矛盾が生じることを懸念しています。ドキュメント/サンプルの欠如。いくつかのドキュメントと孤独なサンプルがあります。ただし、ドキュメントは一連の (古い) ブログ投稿にすぎず、サンプルはライブラリの V2 に基づいています (現在は V4 にあります)。
部分的に奇妙なデザイン。たとえば、ロギングは、特定のロギング フレームワークに依存しないように抽象化されます。けっこうだ。ただし、(NLog ではなく) log4net を使用しているため、独自のアダプターが必要になります。それには を実装する必要があると思います
IRxUIFullLogger
。これには、メトリクスの大量のメソッドが含まれています (50 をはるかに超える)。非常に単純なインターフェースを定義し、ReactiveUI 内に拡張メソッドを提供して、必要なすべてのオーバーロードを容易にする方が、はるかに優れたアプローチだと思いました。さらにIWantsToRegisterStuff
、NLog アセンブリが依存する奇妙なインターフェイスがありますが、これには依存できません (内部インターフェイスであるため)。私はそれが必要ないことを願っています...とにかく、ここでの私の関心は、ライブラリの全体的な設計です。これに噛まれた人いますか?
私はすでにMVVM Lightを広範囲に使用しています。技術的には両方を使用できると Paul がブログに投稿したことは知っていますが、私の懸念は保守性に関するものです。コードベースに両方が混在していると、ひどく混乱するのではないかと思います。
本番環境でリアクティブ UI を使用した経験のある人はいますか? もしそうなら、あなたは私の上記の懸念のいずれかを緩和または対処することができますか?
wpf - ReactiveUI: 単体テストから観察可能なプロパティをテストする
公式 RX ブログに次の例があります。
このようなことを reactui で行いたいと思います。つまり、scheduler.CreateColdObservable(...) の代わりに、実際のプロパティ変更通知からのストリームを使用します。問題は、私が vm.ObservableForProperty と vm.Changed を試してみたが、一貫して動作しなかったことです (すべてのプロパティ変更がイベントを作成したわけではないか、値が null でした)。
私のVMのコードは次のとおりです。
理想的には、2 つのプロパティで Observable.CombineLatest を使用し、タプルを作成して、最初の例のように assert 式でこのタプルを比較したいと思います。
良い結果は次のようになります。
- [OnlyContainingProduct==true;RepoList= フィルタリングされたもの]
- !OnlyContainingProduct を false に変更
- [OnlyContainingProduct==false;RepoList= リスト全体]
*それとも、これはアプローチの仕方が間違っているのでしょうか? これについて私が見た唯一の例は、ミリ秒などの実際の時間測定を使用していますが、Throttle および同様の方法の場合を除いて、それらがどのように役立つかはわかりません。*
c# - リアクティブ UI で階層プロパティの変更をサブスクライブするパターンはありますか?
次のビュー モデルがあるとします。
ここEmployeeViewModel
で、 の最新の値を持つプロパティを公開したいとしますAddress.Line
。
Address
これは、プロパティに変更が加えられた場合にのみチェックされLine
ますが、内部への変更Address
が発生した場合にはチェックされません。代わりにこれを行うと:
Line
これは、現在の範囲内で変更が発生した場合にのみティックしAddressViewModel
ますが、新しい設定をまったく考慮していませんAddressViewModel
(また、に対応していませんnull
Address
)。
私は、この問題を解決するための正しいアプローチに頭を悩ませようとしています。私は RxUI を初めて使用するので、明らかな何かが欠けている可能性があります。アドレスの変更を手動でフックして、2 番目のサブスクリプションをセットアップすることもできますが、これは見苦しく、エラーが発生しやすいようです。
これを達成するために使用すべき標準パターンまたはヘルパーはありますか?
これを試すためにコピー/貼り付けできるコードを次に示します。
ViewModels.cs :
MainWindow.cs :
MainWindow.xaml :
wpf - Reactiveuiで監視可能なコレクションを注文する
ViewModelで監視可能なコレクションを注文するのに問題があります。これが私の状況です:
私のビューモデルには、次のリストがあります。
このリストは、ReactiveAsyncCommand
:を使用して入力されます。
これまでのところすべてが機能します。
別のコマンドがSortByCommand
あります。このコマンドは、ユーザーがコレクションを並べ替えるたびに呼び出されます。コマンドは次のようになります。
このコマンドは、orderby句を使用してコレクションを順序付ける関数も呼び出します。
関数が呼び出されるたびに、次のsortTickets
ような例外がスローされます。
いくつか質問があります。
Tickets
1)モデルを直接設定できないのはなぜですか?OrderBy
最初に、の結果をある種の観察可能なコレクションに変換する必要がありますか?
2)これを行うためのより良い方法はありますか?
編集:明確化
私が今取っているアプローチは次のとおりです。
- コレクションは
Tickets
x秒ごとにリセットされます。 sortTickets
関数が呼び出されるとすぐに、このコレクションを次のように並べ替えてリセットします。Tickets = Tickets.OrderBy(c => c.Name).ToList(); //for example
コレクションが再度読み込まれるときに、プロパティ
Tickets
を設定する前に、コレクションを並べ替える必要があるかどうかを確認して並べ替えTickets
ます。
私は基本的にコレクションをロード時とソート時の2つのポイントに設定しているので、これは少しハッキーな感じがします。さらに、ロード時にReactiveUIヘルパー-> ToPropertyを使用しています:
一方、並べ替えると、自分でそれを実行します。
ロード時にすでに使用しているReactiveUIアプローチを使用してソートを行うためのより良い方法があるかどうか疑問に思っています。
前もって感謝します!
system.reactive - MessageBus とリプレイ
新しいサブスクリプションが発生したときに生成された最後の値を再生するオブザーバブルを MessageBus に登録しようとしました
オブザーバブルがリプレイを飲み込む ScheduledSubject にラップされているため、これは機能しません。それを行う別の方法はありますか?
reactiveui - ReactiveUIObservableAsPropertyHelperが例外タイプに変換できません
読み取り専用プロパティを設定するためにObservableAsPropertyHelperを使用しようとしていますが、何を試しても期待どおりに機能しないようです。
1つのテストにまとめることができます(ReactiveUI 4.3.2.0、Nunit.Framework、Shouldを使用、すべてNuGetから)
しかし、これは結果として
パラメータがに渡されていることを確認できます
そして、GitHubのソースを調べた後、
私のコードは例外を回避しますが、テストにも失敗します。
どうすればTMが間違っているのを避けることができますか?
reactiveui - IObservable から ReactiveCollection を作成する
ReactiveUI を使い始めたばかりです。基本的に、クエリの結果をグリッドに入力しています。現在、私のビューモデルは次のようになっています。
ご覧のとおり、IEnumerable を使用してデータを入力するときに動作させることができますが、コメントアウトされたビットから、IObservable からデータを入力する方法がよくわからないことがわかります。
誰かが私を正しい方向に向けることができれば、お願いします。
編集:
完全な開示のために、ここで間違いを犯した場合に備えて、ObservableRows の実装を含めました。
多くのthx
S
c# - C# で「メンバーが割り当てられていません」という警告を抑制する
次のコードがあります。
ReactiveUI INPC サポートを使用します。Trochoid
コンパイラは、決して割り当てられず、常にnullになることを常に警告しています。RaiseAndSetIfChanged
ただし、サポートを通じて実行される魔法によりCallerMemberName
、コードは機能しますが、コンパイラは間違っています。
コードでこれらの警告をきれいに抑制するにはどうすればよいですか?
mvvm - ReactiveUI の ReactiveCommand の良い例を知っている人はいますか?
私は特に MVVM の経験がありませんが、ReactiveUI を使用しようとしていますが、ReactiveCommand を示す例を理解していません。以前に ICommand / DelegateCommand を使用したことがありますが、これは異なり、取得できません。
私がやろうとしていることは本当に簡単です。ビュー内のボタンをクリックして、ビューモデル内のメソッドを実行させます。私が見つけている例はすべて IObservable<> を含んでいますが、私が完全に初心者向けの説明ではないため、それはわかりません。
基本的に、私はこれを学習体験として使用しようとしています。私が理想的にやりたいことは、xaml のボタンの Command プロパティをコマンドにバインドすることです (ただし、それが機能するかどうかはわかりません)。実行します。コレクションはありません。単一の int 変数を渡すだけです。
助けてくれてありがとう。ほんとうにありがとう。
編集- 以下は、Paul Betts の提案を使用したコードです。
C#
XAML
明らかに私は何かが欠けています。AddToDailyUsedExecuted メソッドと AddToDailyUsedAction メソッドにブレーク ポイントを挿入しましたが、到達することはありません。
ビューの背後にあるコードのコンストラクターを編集します。
javascript - クリック イベントを使用して Meteor テンプレートが更新されない
meteor セッションを使用してリアクティブ メニューを作成しようとしています (ユーザーのビューを永続化するため)。再度レンダリングしないでください。
.html
client.js