WPF:如何在自定义控件中重写 Loaded 事件

WPF : How to override Loaded Event in a Custom Control

提问人:Xaalek 提问时间:5/11/2022 最后编辑:Xaalek 更新时间:5/11/2022 访问量:1016

问:

我想在我的自定义控件中重写事件,但我不知道该怎么做。Loaded

我想像这个例子一样做,但知道它不存在,我不知道该怎么做base.OnLoaded

https://stackoverflow.com/a/28326029/14338640

您可以创建自定义控件并重写事件。请参阅 我尝试了以下代码 TextBox 控件。

class TextBoxEx : TextBox {
    protected override void OnTouchUp(System.Windows.Input.TouchEventArgs e)
    {
        base.OnTouchUp(e);
    }

    protected override void OnTouchDown(System.Windows.Input.TouchEventArgs e)
    {
       base.OnTouchDown(e);
    } 
} 

有关信息,我的自定义控件继承自 。UserControl

C# WPF vb.net 事件 自定义控件

评论

1赞 Clemens 5/11/2022
在控件的构造函数中附加一个 Loaded 事件处理程序。
0赞 Xaalek 5/11/2022
@Clemens?假设它有效。既然这个函数不存在,我该如何调用?Handles MyBase.LoadedMyBase.OnLoad
1赞 Clemens 5/11/2022
无需调用任何基类方法。基类方法调用事件处理程序。查看 Loaded 事件的在线文档。

答:

3赞 Clemens 5/11/2022 #1

您不会“覆盖事件”。重写方法或附加事件处理程序。

由于没有要重写的方法,因此唯一的选择是附加事件处理程序。OnLoaded

public YourControl()
{
    InitializeComponent();
    Loaded += OnLoaded;
}

private void OnLoaded(object sender, RoutedEventArgs e)
{
}

评论

1赞 Clemens 5/11/2022
这是必需的,否则 UserControl 将不会加载其 XAML。请注意,您也可以通过 在 XAML 中附加处理程序。<UserControl ... Loaded="OnLoaded">