標準の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>