2017-03-07 114 views
0

我想显示填充整个屏幕的上下文菜单。全屏显示上下文菜单WPF

我基本上想要在屏幕上的项目上方显示弹出窗口。

这是我要显示上下文菜单的代码:

<Button Height="23" HorizontalAlignment="Left" Name="button1" 
     VerticalAlignment="Top" Width="33" Click="button1_Click" > 
    <Button.Content> 
    <Path x:Name="BtnArrow" Margin="4" VerticalAlignment="Center" Width="10" 
      Fill="#FF527DB5" Stretch="Uniform" HorizontalAlignment="Right" 
      Data="F1 M 301.14,-189.041L 311.57,-189.041L 306.355,-182.942L 301.14,-189.041 Z "/> 
    </Button.Content> 
    <Button.ContextMenu> 
    <ContextMenu> 
     <MenuItem Header="First" Foreground="Snow"> 
     <MenuItem.Icon> 
      <Image Source="../Images/Button/detailsIcon.png"></Image> 
     </MenuItem.Icon> 
     </MenuItem> 

     <MenuItem Header="Second" Foreground="Snow"> 
     <MenuItem.Icon> 
      <Image Source="../Images/Button/detailsIcon.png"></Image> 
     </MenuItem.Icon> 
     </MenuItem> 

     <MenuItem Header="Third" Foreground="Snow"> 
     <MenuItem.Icon> 
      <Image Source="../Images/Button/detailsIcon.png"></Image> 
     </MenuItem.Icon> 
     </MenuItem> 

     <MenuItem Header="Fourth" Foreground="Snow"> 
     <MenuItem.Icon> 
      <Image Source="../Images/Button/detailsIcon.png"></Image> 
     </MenuItem.Icon> 
     </MenuItem>      
    </ContextMenu> 
    </Button.ContextMenu> 
</Button> 
+0

评论,为什么你要做到这一点之前, ? –

回答

0

使用此代码:

Window.xaml设计:

<Window.Resources> 
    <ContextMenu x:Key="popuptrigger"> 
     <MenuItem Header="First" Foreground="Snow"> 
      <MenuItem.Icon> 
       <Image Source="../Images/Button/detailsIcon.png"></Image> 
      </MenuItem.Icon> 
     </MenuItem> 

     <MenuItem Header="Second" Foreground="Snow"> 
      <MenuItem.Icon> 
       <Image Source="../Images/Button/detailsIcon.png"></Image> 
      </MenuItem.Icon> 
     </MenuItem> 

     <MenuItem Header="Third" Foreground="Snow"> 
      <MenuItem.Icon> 
       <Image Source="../Images/Button/detailsIcon.png"></Image> 
      </MenuItem.Icon> 
     </MenuItem> 

     <MenuItem Header="Fourth" Foreground="Snow"> 
      <MenuItem.Icon> 
       <Image Source="../Images/Button/detailsIcon.png"></Image> 
      </MenuItem.Icon> 
     </MenuItem> 
    </ContextMenu> 
</Window.Resources> 
<Grid> 
    <Button Content="Click Me" HorizontalAlignment="Left" VerticalAlignment="Top" Width="75" RenderTransformOrigin="0.56,0.45" Margin="105,100,0,0" Click="Button_Click"/> 
</Grid> 

窗口。 xaml.cs:

private void Button_Click(object sender, RoutedEventArgs e) 
    { 
     ContextMenu cm=this.FindResource("popuptrigger") as ContextMenu; 
     cm.PlacementTarget = sender as Button; 
     cm.IsOpen = true; 
    } 
+0

感谢这个,但它并没有填满整个屏幕 – John

+0

全屏或填充屏幕? –

+0

对不起,全屏 – John

0

试试这个代码:

<Window x:Class="WpfApplication1.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window1" Height="{x:Static SystemParameters.PrimaryScreenHeight}" Width="{x:Static SystemParameters.PrimaryScreenWidth}" WindowStartupLocation="CenterScreen"> 
<Window.Resources> 
    <ContextMenu x:Key="cmButton" Height="{x:Static SystemParameters.PrimaryScreenHeight}" Width="{x:Static SystemParameters.PrimaryScreenWidth}"> 
     <MenuItem Header="First" Foreground="BlueViolet"> 
      <MenuItem.Icon> 
       <Image Source="../Images/Button/detailsIcon.png"></Image> 
      </MenuItem.Icon> 
     </MenuItem> 

     <MenuItem Header="Second" Foreground="Chocolate"> 
      <MenuItem.Icon> 
       <Image Source="../Images/Button/detailsIcon.png"></Image> 
      </MenuItem.Icon> 
     </MenuItem> 

     <MenuItem Header="Third" Foreground="ForestGreen"> 
      <MenuItem.Icon> 
       <Image Source="../Images/Button/detailsIcon.png"></Image> 
      </MenuItem.Icon> 
     </MenuItem> 

     <MenuItem Header="Fourth" Foreground="Maroon"> 
      <MenuItem.Icon> 
       <Image Source="../Images/Button/detailsIcon.png"></Image> 
      </MenuItem.Icon> 
     </MenuItem> 
    </ContextMenu> 
</Window.Resources> 
<Grid> 
    <Button Content="Click Me" HorizontalAlignment="Left" VerticalAlignment="Top" Width="75" RenderTransformOrigin="0.56,0.45" Margin="109,61,0,0" Click="Button_Click"/> 

</Grid> 

0

我设法使用下面的样式来得到这个权利:

<Style TargetType="{x:Type ContextMenu}"> 
      <Setter Property="OverridesDefaultStyle" Value="True"/> 
      <Setter Property="SnapsToDevicePixels" Value="True"/> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type ContextMenu}"> 
         <Border Background="Black" CornerRadius="7, 7, 8, 8" BorderBrush="Transparent" BorderThickness="2" > 
          <StackPanel ClipToBounds="True" Orientation="Vertical" IsItemsHost="True" Margin="5,4,5,4"/> 
         </Border> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style>