3

私はそれを宣言するクラスを持っていますが、そのクラスは別のより大きなクラスにアイテムとして追加されます。Init()呼び出しと同じステートメントでメソッドを呼び出す方法はありますか?コンストラクターを呼び出すときにパブリックプロパティ/変数を定義するのと似ています。コンストラクターでメソッドを呼び出したくないInit()のは、WPFデザイナーが混乱しているためです。

 FitsView fv = new FitsView();
 fv.Init();
4

4 に答える 4

4

これを行うには、静的関数を使用できます。

public static FitsView CreateFitsView()
{
    var fv = new FitsView();
    fv.Init();
    return fv;
}

次に、代わりにその静的関数を呼び出すだけですnew FitsView()

于 2012-12-05T20:50:41.880 に答える
0

初期化の準備ができていることがわかっている場合は、カスタムイベントをFitsViewにフックすることもできますか?

そして、次のように使用します。

FitsView fv = new FitsView();
fv.someCustomEvent += (o,e) => { fv.Init(); };
于 2012-12-05T20:52:50.217 に答える
0

同様に、StringBuilder.AppendInitを変更して、オブジェクトへの参照を返すことができます。

Public FitsView Init()
{
    //Do stuff

    return this;
}

それで:

FitsView fv = new FitsView().Init();
于 2012-12-05T20:53:35.063 に答える
0

あなたのinitメソッドのためにデザイナーが問題を抱えた場合、私が考えることができる2つの理由があります:

  • これは、Initメソッドで行うことには、アプリケーションのローカリティが必要なためです(リソースやファイルの読み取り、またはハードウェアの使用)
  • メソッドを呼び出すには、Initいくつかの外部アセンブリを動的にロードする必要があります。

最初の問題については、以下を確認することをお勧めします。

  1. クラスの場合:WPFにDesignModeプロパティはありますか?
  2. ビューモデルの場合:http://blog.laranjee.com/how-to-get-design-mode-property-in-wpf/

また、ここの人々はこのバグを指摘しているので注意してください(winformsでwpfをホストしています):https ://connect.microsoft.com/VisualStudio/feedback/details/620001/system-componentmodel-designerproperties-getisindesignmode-does-not-work- if-the-wpf-is-hosted-on-a-winform#tabs

2番目の問題については、Initメソッドを別のメソッドでラップしてInitWrapper、ラッパーメソッドのデザインモードチェックを行うことができます。

于 2012-12-05T21:09:32.070 に答える