(主に)ウィンドウレスWPFアプリのどこにコードを配置しますか?
-
06-07-2019 - |
質問
だから、私は主にウィンドウなしのアプリケーションであるアプリケーションを書くことを計画しています。ユーザーインタラクション用のウィンドウがありますが、ユーザーの要求がある場合のみです。それ以外の場合、アプリケーションはシステムトレイに座ってタイマーを実行し、1分ごとに何らかのロジックを実行します。私の質問はこれです:私が知る限り、関連するすべてのロジックをApp.xaml.csに入れます(タイマーを開始し、各間隔でロジックを実行します)が、何らかの理由でこれは間違っているようです。
アプリには、ユーザーが操作して詳細を取得したり、設定を調整したりできるシステムトレイアイコンがありますが、それ以外の場合はアプリがそのまま動作します。 App.xamlクラスのコードビハインドにすべてのコードを配置するのは適切ですか?理由はわかりませんが、そうすべきではないようで、どこかに別の場所があるはずですが、実際には何も考えられません。
これまでこのようなアプリを書いたことはないので、無知です。どんなアドバイスも大歓迎です。ありがとう。
ジェームズ
解決
ほとんどの対話がウィンドウを介して行われるアプリケーションでも、通常、すべてのコードをコードビハインドに配置することは悪い考えです。インタラクションは、多くの場合、コードビハインドでイベントハンドラーによって開始されますが、自分で作成したクラスにコードを配置できます。
ほとんどの場合、ユーザーインターフェイスを表示しないアプリケーションについても同様です。ほとんどのアクションはApp.xaml.csから開始されますが、すべてのコードがそこになければならないというわけではありません。タイマーを独自のクラスにカプセル化して、他のコードを開始して動作させることができます。コードを職責に沿って分割します。ウィンドウクラスはUIを行い、ドメインロジックは他のファイルに移動します。これにより、よりメンテナンスしやすいアプリケーションを作成できます。
他のヒント
コードがそこに属しているようには聞こえず、せいぜいタイマーを開始するための呼び出しだけです。 問題にぴったりのように聞こえるのは、 MV-VM (モデル-ビュー-ViewModel)パターン。既に述べたように、コードビハインドにロジックを追加するよりも、より適切に「感じる」でしょう。 MVVMを使用すると、スパースUIをビューに分離でき、コードはModelとViewModelに別々に存在できます。
ここでツールキットを使用して、また、優れた概要ドキュメントと、独自のソリューションを作成するときにダイジェストできるサンプルも含まれています。 Laurent Bugnion は、開始に使用できるMVVMスターターツールキットもリリースしました。
また、こちらは、実際にセットアップを開始するための良いものですシステムトレイのコントロール。