我已经设计了一个窗口来替换标准 Chrome,我想使用 EventSetters 处理激活和停用事件。我收到一个错误“...'Activated' 必须是已注册的 RoutedEvent...”:
<EventSetter Event="Activated" Handler="Window_Activated"/>
但是,这在相同的样式中效果很好。
<EventSetter Event="Loaded" Handler="Window_Loaded"/>
有人遇到过这个或知道发生了什么吗?
编辑:
<Style x:Key="Window_Cartesia" TargetType="{x:Type Window}">
<Setter Property="WindowStyle" Value="None"/>
<Setter Property="AllowsTransparency" Value="True"/>
<Setter Property="Background" Value="Transparent"/>
<EventSetter Event="Loaded" Handler="Loaded"/>
<EventSetter Event="Activated" Handler="Window_Activated"/>
<EventSetter Event="KeyDown" Handler="KeyDown"/>
...
编辑:
这似乎涵盖了它。
在 Loaded 事件中定义:
AddHandler Win.Activated, AddressOf Activated
AddHandler Win.Deactivated, AddressOf Deactivated
因为这是一种样式的代码,所以我需要一个实例引用,即 Win。我不知道这是否是实现这一目标的最佳方法,但是......
编辑1:
或者,IsActive 的触发器在 xaml 中处理它。
<Trigger Property="IsActive" Value="True">
...
</Trigger>