0

xamlにロードされたイベントを持つエクスパンダーがあり、それはうまく機能します:

<Expander Name="exp" Loaded="expander_Loaded">

しかし、私はコードビハインドで試してみます:

   Expander ex = new Expander();
   ex.Loaded += new RoutedEventHandler(expander_Loaded);

   void expander_Loaded(object sender, RoutedEventArgs e)
   {
        //code
   }

そして、それは機能しません。

expander_Loadedエクスパンダがロードされているときにどのように呼び出すことができますか?

4

2 に答える 2

1

使用する場合

<Expander Name="exp" Loaded="expander_Loaded">

XAMLに新しいエキスパンダーを挿入します。つまり、ディスプレイはそれを認識して動作します。

あなたがするとき:

Expander ex = new Expander();
ex.Loaded += new RoutedEventHandler(expander_Loaded);

void expander_Loaded(object sender, RoutedEventArgs e)
{
    //code
}

新しいExpanderオブジェクトを作成してイベントを割り当て、その行の後に使用されていない場合は、すぐに破棄します。試す

<Expander Name="exp">

//refers to the declared object
exp.Loaded += new RoutedEventHandler(expander_Loaded);

void expander_Loaded(object sender, RoutedEventArgs e)
{
    //code
}

それが機能することを確認します。さらに、実行時にコントロールを作成して追加する場合は、コレクションの操作について説明しているこの質問を参照してください。Children

于 2013-01-14T12:42:45.847 に答える
0

コードやマークアップでイベントをフックする必要はありません。削除Loaded="expander_Loaded"または削除しex.Loaded += new RoutedEventHandler(expander_Loaded);ます。2回行うと、この予期しない効果が生じる可能性があります。

于 2013-01-14T12:38:55.330 に答える