2011-01-05 3 views
2

В принципе, у меня есть DataTemplate, который определяет элементы в ItemsControl, и я хочу выпустить речевой пузырь над элементом при его нажатии. Пока мои попытки приводят к тому, что мой Adorner появляется внутри DataTemplate и обрезается границами этого DataTemplate, а не над ним. Я использую отличный элемент управления adorner, который можно найти здесь: http://www.codeproject.com/KB/WPF/adornedcontrol.aspx.Могу ли я добавить рекламодателя к элементу DataTemplate за пределами шаблона данных?

Моя XAML выглядит следующим образом:

<DataTemplate x:Key="TrackActivityDetailTemplate"> 
     <ac:AdornedControl HorizontalAlignment="Center" VerticalAlignment="Center" VerticalAdornerPlacement="Outside" > 
      <ac:AdornedControl.AdornerContent> 
       <TextBlock Foreground="Red" Text="HEY!!!!" /> 
      </ac:AdornedControl.AdornerContent> 
      <Rectangle Name="btn" Height="35" Width="2" Fill="{Binding Foreground, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ItemsControl}}}" > 
      <i:Interaction.Triggers> 
       <i:EventTrigger EventName="MouseLeftButtonDown"> 
        <cmd:EventToCommand Command="{Binding Path=SelectActivityCommand}" PassEventArgsToCommand="True"/> 
       </i:EventTrigger> 
      </i:Interaction.Triggers> 
     </Rectangle> 
     </ac:AdornedControl> 
    </DataTemplate> 

Любые мысли? Является ли то, что я пытаюсь сделать даже с помощью украшений?

ответ

1

Да, это возможно. Первое, что я попробую, это установить ClipToBounds = false на элемент, вызывающий обрезку.

Это не всегда работает, однако в этих случаях вы можете обернуть его в холст и «поплавать» холстом. Этот трюк описан здесь: http://drwpf.com/blog/2007/12/28/cliptoboundsmaybe/

+0

Спасибо за ваш быстрый ответ! И извините за мое запоздалое принятие. Это отлично поработало. Я смог просто обмануть его с полями, чтобы поместить его туда, где я хотел. – Danno

 Смежные вопросы

  • Нет связанных вопросов^_^