5

我有以下 DataTemplate :

<DataTemplate>

<Grid>
<1-- Content -->
</Grid>

</DataTempalte>

我想在网格的内容之上放置一个装饰器。

我怎样才能做到这一点?

我要使用的装饰器是另一个网格。

我们可以仅在纯 XAML 中执行此操作吗?

谢谢

4

2 回答 2

6

我使用以下代码获得了非常好的经验:

http://www.codeproject.com/Articles/54472/Defining-WPF-Adorners-in-XAML

将一些类添加到您的代码库后,您可以像这样在 Xaml 中定义 Adorner:

<local:AdornedControl x:Name="adornedControl" HorizontalAlignment="Center" VerticalAlignment="Center"
    HorizontalAdornerPlacement="Outside" VerticalAdornerPlacement="Outside" IsAdornerVisible="True"
        IsMouseOverShowEnabled="False">
<local:AdornedControl.AdornerContent>
    <Canvas x:Name="adornerCanvas" HorizontalAlignment="Center" VerticalAlignment="Center">
        <Thumb Canvas.Top="-5" Canvas.Left="-5" />
        <Thumb Canvas.Bottom="-5" Canvas.Left="-5" />
        <Thumb Canvas.Top="-5" Canvas.Right="-5" />
        <Thumb Canvas.Bottom="-5" Canvas.Right="-5" />
    </Canvas>
</local:AdornedControl.AdornerContent>
于 2012-05-07T11:34:30.557 回答
1

不,WPF Adorners 必须在代码中实现,正如您将在MSDN上看到的那样。

如果您无法在代码中创建 Andorner,则可以考虑直接在 DataTemplate 中将所需的 XAML 分层。此外,由于 Adorner 使用DrawingContext进行渲染,您会发现使用 Grid 也不实用。

于 2012-05-05T15:04:19.320 回答