Z порядок между Image и InkPresenter
У меня есть этот 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
, Кто-нибудь знает, почему это может быть?
Буду признателен за любую оказанную помощь.
1 ответ
Вы думаете о z-порядке в обратном направлении. Более высокие значения ближе к пользователю, поэтому изображение со значением 2 рисуется поверх чернил со значением 1.
Смотрите MSDN