I have an expander with a loaded event in xaml, and it works well :
<Expander Name="exp" Loaded="expander_Loaded">
But I try in code-behind :
Expander ex = new Expander();
ex.Loaded += new RoutedEventHandler(expander_Loaded);
void expander_Loaded(object sender, RoutedEventArgs e)
{
//code
}
And it doesn't work.
How can i call expander_Loaded
when my expander isLoaded?
When you use
<Expander Name="exp" Loaded="expander_Loaded">
you insert a new Expander into your XAML, i.e. the display knows about it and works with it.
When you do:
Expander ex = new Expander();
ex.Loaded += new RoutedEventHandler(expander_Loaded);
void expander_Loaded(object sender, RoutedEventArgs e)
{
//code
}
you create a new Expander
object, assign it an event, and then, if it is not used after that line, promptly discard it. Try
<Expander Name="exp">
with
//refers to the declared object
exp.Loaded += new RoutedEventHandler(expander_Loaded);
void expander_Loaded(object sender, RoutedEventArgs e)
{
//code
}
to see that it will work. Additionally, if you want to create and add controls at runtime, take a look at this question, that explains working with the Children
collection