我在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
?
答案 0 :(得分: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
}
看它会起作用。此外,如果您想在运行时创建和添加控件,请查看this question,其中说明使用Children
集合
答案 1 :(得分:0)
您不需要在标记中的代码和中挂钩事件。删除Loaded="expander_Loaded"
或删除ex.Loaded += new RoutedEventHandler(expander_Loaded);
。这种意想不到的效果可能会两次。