XAML - 在右键单击的元素顶部打开上下文菜单
XAML - Open ContextMenu on top of right clicked element
我试图在右键单击的元素顶部打开上下文菜单。但它只在鼠标点击的位置打开。
<TextBlock Grid.Row="1" Grid.Column="0" VerticalAlignment="Center" x:Name="testeTB" Text="Name:">
<TextBlock.ContextMenu>
<ContextMenu>
<ContextMenu.Style>
<Style TargetType="ContextMenu">
<Setter Property="Placement" Value="Top"></Setter>
<Setter Property="PlacementTarget" Value="{Binding ElementName=testeTB}"></Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ContextMenu">
<controls:PopupMenu>
<controls:PopupMenu.Children>
<wpf:ArbeitListBoxItem Content="Add Messages"></wpf:ArbeitListBoxItem>
<wpf:ArbeitListBoxItem Content="Remove Messages"></wpf:ArbeitListBoxItem>
</controls:PopupMenu.Children>
</controls:PopupMenu>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ContextMenu.Style>
</ContextMenu>
</TextBlock.ContextMenu>
</TextBlock>
As you can see in my example, I tried setting Placement to "Top" and
also setting the PlacementTarget using textblock element name, but it
didn't work.
是否可以使用 ContextMenu 来实现?还是我应该使用 Popup ?我真的更喜欢使用 ContextMenu
尝试设置目标Control的ContextMenuService.Placement
属性,这里是XAML例子:
<Grid>
<TextBlock
Padding="10 5"
Background="Lime"
ContextMenuService.Placement="Right"
Grid.Row="1"
Grid.Column="0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="Name:">
<TextBlock.ContextMenu>
<ContextMenu>
<ContextMenu.Template>
<ControlTemplate>
<Border Background="Red">
<TextBlock Text="Context menu content..." Margin="20 15" />
</Border>
</ControlTemplate>
</ContextMenu.Template>
</ContextMenu>
</TextBlock.ContextMenu>
</TextBlock>
</Grid>
我试图在右键单击的元素顶部打开上下文菜单。但它只在鼠标点击的位置打开。
<TextBlock Grid.Row="1" Grid.Column="0" VerticalAlignment="Center" x:Name="testeTB" Text="Name:">
<TextBlock.ContextMenu>
<ContextMenu>
<ContextMenu.Style>
<Style TargetType="ContextMenu">
<Setter Property="Placement" Value="Top"></Setter>
<Setter Property="PlacementTarget" Value="{Binding ElementName=testeTB}"></Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ContextMenu">
<controls:PopupMenu>
<controls:PopupMenu.Children>
<wpf:ArbeitListBoxItem Content="Add Messages"></wpf:ArbeitListBoxItem>
<wpf:ArbeitListBoxItem Content="Remove Messages"></wpf:ArbeitListBoxItem>
</controls:PopupMenu.Children>
</controls:PopupMenu>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ContextMenu.Style>
</ContextMenu>
</TextBlock.ContextMenu>
</TextBlock>
As you can see in my example, I tried setting Placement to "Top" and also setting the PlacementTarget using textblock element name, but it didn't work.
是否可以使用 ContextMenu 来实现?还是我应该使用 Popup ?我真的更喜欢使用 ContextMenu
尝试设置目标Control的ContextMenuService.Placement
属性,这里是XAML例子:
<Grid>
<TextBlock
Padding="10 5"
Background="Lime"
ContextMenuService.Placement="Right"
Grid.Row="1"
Grid.Column="0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="Name:">
<TextBlock.ContextMenu>
<ContextMenu>
<ContextMenu.Template>
<ControlTemplate>
<Border Background="Red">
<TextBlock Text="Context menu content..." Margin="20 15" />
</Border>
</ControlTemplate>
</ContextMenu.Template>
</ContextMenu>
</TextBlock.ContextMenu>
</TextBlock>
</Grid>