Muh*_*tar 34 c# wpf user-controls
要在WPF中实现基于选项卡的环境,我们需要将表单转换为用户控件,但是在执行此操作时,将Loaded
调用用户控件的事件两次.
在互联网上搜索时,其他人也指出了这个问题.我们怎样才能确保只调用一次加载的事件?因为当它被多次调用时,我们的控件的初始化会多次发生.
Cod*_*ked 42
正如本博客中所解释的,当即将呈现控件(即添加到可视树)时,会触发Loaded事件.
有几个控件会导致您的控件多次加载/卸载.例如,本机WPF TabControl仅呈现所选选项卡的内容.因此,当您选择新选项卡时,将卸载先前选定选项卡的内容.如果单击返回先前选择的选项卡,则会重新加载其内容.
一个解决方法是使用布尔值来标记您是否已经按照其他人的建议初始化了控件.或者,您也许可以使用Initialized事件.
Gle*_*den 18
您的路由事件处理程序可以(并且应该)从Loaded
钩子中删除它自己的第一件事.
public class MyClass : Window
{
public MyClass()
{
Loaded += MyLoadedRoutedEventHandler;
}
void MyLoadedRoutedEventHandler(Object sender, RoutedEventArgs e)
{
Loaded -= MyLoadedRoutedEventHandler;
/// ...
}
};
Run Code Online (Sandbox Code Playgroud)