Я пытаюсь показать всплывающее окно на DataTemplate
элемент TextEdit
(от DevExpress), в соответствии с this и this темы я создал что-то вроде этого:Найти предка в DataTemplate
<DataTemplate x:Key="SomeTemplate">
<dxe:TextEdit x:Name="SomeTextEdit" Text="{Binding DisplayText, Mode=OneWay}"
EditMode="InplaceInactive">
<dxe:TextEdit.ContextMenu>
<ContextMenu/>
</dxe:TextEdit.ContextMenu>
<Popup PlacementTarget="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type dxe:TextEdit}}}" IsOpen="{Binding IsKeyboardFocused, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type dxe:TextEdit}}, Mode=OneWay}">
<TextBlock Background="White">
<TextBlock.Text>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</TextBlock.Text>
</TextBlock>
</Popup>
</dxe:TextEdit>
</DataTemplate>
И это не работает, в Окно «Диагностические инструменты». Я получаю сообщение:
Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='DevExpress.Xpf.Editors.TextEdit', AncestorLevel='1''. BindingExpression:(no path); DataItem=null; target element is 'Popup' (Name=''); target property is 'PlacementTarget' (type 'UIElement')
Почему это?
Похоже, что вы можете захотеть «RelativeSource Self» здесь - вы пробовали это? –