Image和InkPresenter之间的Z顺序

时间:2009-07-22 03:45:31

标签: wpf image wpf-positioning

我有这个包含InkPresenterImage的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> MouseDownMouseUp等事件附加到MouseMove,因为我计划稍后将这些事件的处理移至其他类。< / p>

不幸的是,这些事件未被捕获,因为InkPresenter位于Image之上,因此它获取事件而不是InkPresenter。有谁知道为什么会这样?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

你正在考虑向后z阶。较高的值更接近用户,因此值为2的图像将在值为1的墨水上绘制。

请参阅MSDN