我在WinUI 3中创建了一个具有一些自定义属性的CustomControl
(DependencyProperty
)。
现在,我还想添加一个自定义的Event
(不确定它是否必须是RoutedEvent
?),只要控件的CurrentStatus
属性发生更改,它就必须触发。我希望能够像管理简单Button的Click
一样管理它,因此类似于:
第一个
我应该如何在MyCustomTextBlock
控件的代码背后声明Event和EventHandler?
我是WinUI 3和XAML的新手,正在查找"* winui 3自定义事件 *"。我找到了this,但它与WPF相关,因此我找不到WinUI Microsoft.UI.Xaml
库中引用的EventManager.RegisterRoutedEvent()
。
更新日期:2022年9月13日
我按照@AndrewKeepCoding的建议,现在这是我在MainWindow
页面上放置MyCustomTextBlock
控件的代码。
第一个
没有警告或编译错误,但现在每次我在调试模式下启动应用程序时,它都会崩溃,而不会捕获任何特定的异常,错误描述如下:
[10584] WinUI3TestApp.exe中出现Win32非托管异常
调用MainWindow.InitializeComponent()
方法没有任何问题,但在传递public MyCustomTextBlock()
构造函数方法的最后一行后,我不知道发生了什么,但一些东西使应用程序崩溃。
更新日期:2022年9月14日
它似乎与这个Microsoft.UI.Xaml
Issue有关。可能是异步方法内部的某个地方出错了,但由于这个bug,不可能捕获异常。
- 解决方法**
我的问题与XAML(StatusChanged="MessageBlock_StatusChanged"
)中添加的事件处理程序方法有关。
将其删除并在MyCustomTextBlock.Loaded()
方法的代码隐藏中替换为事件处理程序声明(MessageBlock.StatusChanged += MessageBlock_StatusChanged;
)后,一切都正常工作。
1条答案
按热度按时间cgyqldqp1#
您可以像这样实现一个自定义的
EventHandler
。