我有这个包含InkPresenter
和Image
的CustomControl。该图片有一个AdornerDecorator
,因为我打算稍后在图片上添加一个装饰器。我已将Canvas.ZIndex
的{{1}}设置为高于Image
,以便InkPresenter
将在图片上绘制。
问题在于,当我尝试从InkPresenter
收集并显示墨水时,笔划会在图像下方绘制。 (我已经习惯使用Snoop检查可视树,而InkPresenter
位于InkPresenter
之上)我不知道为什么会这样。有谁在这里知道为什么在Image
之上绘制了Image
?非常感谢任何帮助。
我的代码如下:
Generic.xaml
InkPresenter
我已将<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
,因为我计划稍后将这些事件的处理移至其他类。< / p>
不幸的是,这些事件未被捕获,因为InkPresenter
位于Image
之上,因此它获取事件而不是InkPresenter
。有谁知道为什么会这样?
非常感谢任何帮助。