У меня есть этот CustomControl, который содержит InkPresenter
и Image
. Изображение имеет AdornerDecorator
, так как я планирую добавить к нему рекламного объявления позже. Я установил Canvas.ZIndex
из Image
выше, чем InkPresenter
, чтобы InkPresenter
было нарисовано поверх изображения.
Проблема в том, что когда я пытаюсь собрать и отобразить чернила из InkPresenter
, штрихи рисуются под изображением. (Я использовал для проверки визуального дерева, используя Snoop, и InkPresenter
выше Image
). Я не уверен, почему это так. Кто-нибудь здесь знает, почему Image
нарисован поверх InkPresenter
? Любая помощь очень ценится.
Мой код выглядит следующим образом:
Generic.xaml
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:HotSpotImage">
<Style TargetType="{x:Type local:HotSpotImage}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:HotSpotImage}">
<ControlTemplate.Resources>
<local:StringtoImageSource x:Key="ImageSourceConverter"/>
</ControlTemplate.Resources>
<Canvas Width="{TemplateBinding Width}"
Height="{TemplateBinding Height}">
<InkPresenter Canvas.ZIndex="1"
x:Name="PART_InkPresenter"
Width="{TemplateBinding Width}"
Height="{TemplateBinding Height}"/>
<Image Canvas.ZIndex="2" x:Name="PART_Image"
Width="{TemplateBinding Width}"
Height="{TemplateBinding Height}" Source="{Binding
RelativeSource={RelativeSource TemplatedParent},
Path=Source,
Converter={StaticResource ImageSourceConverter}}"/>
</Canvas>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
Я прикрепил события MouseDown
, MouseUp
, MouseMove
и т. Д. К InkPresenter
, так как позже планирую перенести обработку этих событий на другие классы.
К сожалению, эти события не фиксируются, потому что Image
рисуется поверх InkPresenter
, поэтому он получает события, а не InkPresenter
. Кто-нибудь знает, почему это может быть?
Любая помощь очень ценится.