WPF、InitializeComponentの直後にコードを書くのは悪い習慣ですか?

c# coding-style wpf
WPF、InitializeComponentの直後にコードを書くのは悪い習慣ですか?

私はただ何かについて疑問に思っていました。 私はページをロードするフレームを持っていて、現在各ページはそのページがアクセスされるたびに実行される `Page_Loaded`メソッドを持っています。 これはうまく機能していますが、ナビゲーションを使用して以前にアクセスしたページに移動するとエラーが発生します。 ページに戻ると、 `Page_Loaded`が再び呼び出されていますが、これは望まないことです。

デバッグを使用して、私は InitializeComponent`がページが最初に実装されたときにのみ呼び出されていて、この呼び出しの後に単に Page_Loaded`コードを置くことができるかどうか疑問に思いました:

public partial class MyPage: Page
{
    public MyPage()
    {
        InitializeComponent();
        //======> To Here
    }

    private void Page_Loaded(object sender, RoutedEventArgs e)
    {
       //Put Code from here <======
    }
}

これで私の問題は解決しますが、悪い習慣ですか? そして、もしそうなら、今後どのような問題が発生するでしょうか。

ありがとう、Kohan

  2  0


ベストアンサー

コンストラクタで何かをするのは合法的です。 これで問題ないと思います。

WPFは、オブジェクトへのアクセスなどの点でASP.NETとは異なります。 それは少しゆるいので、コンストラクタで何かをすることは、それがASP.NETにあるかどうかの引用ではありません。

5


ご指摘のとおり、 `Page_Loaded`イベントはページが更新されるたびに発生するので、コードを1回しか実行したくないのであれば、それをコンストラクタに入れるのが論理的な場所です。

どれだけのコードが必要かによっては、それを別の方法にリファクタリングすることを検討する必要があるかもしれません。

更新

tehBuildings`を生成するのに使われているクエリがnullを返しているので(明らかに言って)、 getBuildings`を呼び出す前に呼び出す必要がある他のコードがあると思います。 あなたのオリジナルのコードを見ないで、私は今何が欠けているのか言いたくない。

1


タイトルとURLをコピーしました