2017-05-20 9 views
0

私のプロジェクトのapp.xaml.csに、UserProfileタイプとExercisePlanタイプの2つのメンバー変数を追加しました。プロジェクトにアクセスできるようにこれらを追加しました。私のカスタムクラスのExercisePlanでは、UserProfileタイプの別のメンバー変数を作成しています。このUserProfile変数をApplication.Current.UserProfileと同じに設定します。WPFのカスタムクラスファイルでアプリケーションを公開する方法

理論的には、クラスの変数をアプリケーションの現在のユーザーと同じに設定する必要があります。私はこのVSを試してみるとApplication.Currentは存在しないと伝えます。

私はすでにこれと似たようなことをしましたが、カスタムクラスファイルではなく.xaml.csファイルにありました。

新しいWPFはので、これらのすべてを行うには良い方法は... TBH、それはここにあなたのための偉大な距離を移動します依存性注入のビットのように聞こえる私に 例を

namespace TrackFit_Project 
{ 
    public partial class App : Application 
    { 
    #region Member Variables 

    private UserProfile user; 
    private ExercisePlan exercisePlan; 

    #endregion 
    } 
} 

namespace TrackFit_Project 
{ 
    public class ExercisePlan 
    { 

    #region Member Variables 

    // This is where my issue is 
    // public UserProfile _user = Application.Current.UserProfile(); 

    #endregion 
    } 
} 
+0

サウンドおそらくアプリケーション設定を使用したいかもしれませんか?私はあなたが直面している問題が何であるか分かりません。 – Noctis

+0

_ "このUserProfile変数をApplication.Current.UserProfileと同じに設定したい" _ - アプリケーションコードではなくアプリケーションコードから設定する必要がありますカスタムクラス。率直に言えば、とにかくこのデザインを持つことはおそらくいい考えではありません。この「カスタムクラスファイル」が同じプロジェクトの一部であると仮定して、必要な 'using'ディレクティブ(あなた自身の' App'型にキャストする必要があります)を追加することで、おそらく 'Application.Current'にアクセスできます(例えば 'using System.Windows;')。 –

+0

しかし、これらの2つの変数/プロパティが必要で、ある場所から別の場所にコピーしたい場合は、依存コード(アプリケーション)がサポートコードを参照することによって、クラス間の結合を最小限に抑える必要があります逆に。 –

答えて

0

をtheresの教えてください場合:

class foo { 
    private string my_foo; 
    public void foo(string injected){ my_foo = injected; } // dependency was injected 
    // more stuff 
} 

あなたはあなたのためにこれを行うにはAutofacのようなものを使用、またはちょうどあなたのクラスに変数を渡すことによって、手動でそれを行うことができます。
ボトムラインは同じで、他のモジュールに依存することなく、必要な変数を得ることができます。アプリケーションを単体テストするときに簡単にモックすることができます(アプリケーションを単体テストするので簡単です)。

+0

私はこの解決策を理解していない:(。私のカスタムクラスまたはApp.xaml.csクラスです。 – Alvaromon

+0

クラスfooはあなたのカスタムクラスであり、必要な依存関係が注入されます。 [youtubeのビデオ](https://www.youtube.com/watch?v=IKD2-MAkXyQ)(私はそれを見ていないが、私はあなたにアイデアを与えるだろうと思う) – Noctis

関連する問題