2014-01-12 122 views
4

我正在开发一个边框较少WPF窗口应用程序与MahApps.Metro控制。用MahApps.Metro无边框窗口的菜单替换窗口标题

我想让我的菜单正常显示窗口标题(标题栏的左侧)。像下面的图片:

enter image description here

我已经走到这一步,看起来像下面的图片:

enter image description here

我已经尝试设置HorizontalAlignment="Left",但菜单组保持对的右侧标题栏。

代码如下:

<Controls:MetroWindow.WindowCommands>   
    <Controls:WindowCommands HorizontalAlignment="Left"> 
     <Menu IsMainMenu="True" x:Name="mnuMainMenu" Height="28" HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="12" Background="Transparent" Width="Auto" > 

      <MenuItem Header="_File" x:Name="mnuFile" Visibility="Visible" Background="Transparent"> 
       <MenuItem Header="_Open" x:Name="mnuOpen" Background="Transparent" Command="{Binding MenuOpenCommand}" /> 

       <MenuItem Header="_Exit" x:Name="mnuExit" Click="btnExit_Click" Background="Transparent"/> 
      </MenuItem> 

      <MenuItem Header="_Tools"> 
       <MenuItem Header="_Repeat" x:Name="mnuRepete" Background="Transparent" > 
        <MenuItem Header="Repeat None" Command="{Binding RepeatNoneCommand}" IsCheckable="True"/> 
        <MenuItem Header="Repeat One" Command="{Binding RepeatOneCommand}" IsCheckable="True"/> 
        <MenuItem Header="Repeat All" Command="{Binding RepeatAllCommand}" IsCheckable="True"/> 
       </MenuItem> 
      </MenuItem> 

      <MenuItem Header="_Store" x:Name="smOnlineMode" Background="Transparent" Click="smOnlineMode_Click" IsCheckable="True" /> 
      <MenuItem Header="_Play Mode" x:Name="smPlayMode" Background="Transparent" Click="smPlayMode_Click" IsCheckable="True" IsChecked="True"/> 


      <MenuItem Header="_Play"> 
       <MenuItem Header="_Play" x:Name="mnuPlay" Background="Transparent" Command="{Binding PlayCommand}"/> 
       <MenuItem Header="P_ause" x:Name="mnuPause" Background="Transparent" Command="{Binding PauseCommand}"/> 
       <MenuItem Header="_Stop" x:Name="mnuStop" Background="Transparent" Command="{Binding StopCommand}"/> 
       <Separator/> 
       <MenuItem Header="_Next" x:Name="mnuNext" Background="Transparent" Command="{Binding NextTrackCommand}"/> 
       <MenuItem Header="P_revious" x:Name="mnuPrevious" Background="Transparent" Command="{Binding PreviousTrackCommand}" /> 
       <MenuItem Header="_Mute/UnMute" x:Name="smnuMute" Background="Transparent" Command="{Binding MuteSoundCommand}" /> 
       <!--Command="{Binding MuteSoundCommand}"--> 

      </MenuItem> 

      <MenuItem Header="_Help"> 

       <MenuItem Header="_Help" x:Name="smnuOnlineHelp" Background="Transparent" Click="smnuHelp_Click" /> 
       <Separator /> 
       <MenuItem Header="_Register Player" x:Name="smnuRegister" Background="Transparent" Click="smnuRegisterPlayer" /> 

       <MenuItem Header="_About Codero Music Player" x:Name="smnuAbout" Background="Transparent" Click="smnuAboutClick" /> 
      </MenuItem> 
     </Menu> 
    </Controls:WindowCommands> 
</Controls:MetroWindow.WindowCommands> 
+1

感谢编辑@Nikolaev – autopilot

+0

_WindowCommands是最小化,最大化/还原,和关闭按钮。您可以在[Mahapps.Metro - 快速启动](http://shiftkey.github.io/MahApps.Metro/guides/quick-start.html)上将您自己的控件添加到WindowsCommands_,表明它们将始终位于右侧 – dkozl

+0

@dkozl可能你是对的! Mahapps.Metro上的WindowsCommands将始终位于右侧。我已经尝试了所有可能的方法来到我的脑海。 – autopilot

回答

0

创建StackPanel,把你的菜单为StackPanel和设置属性HorizontalAlignment=Left或尝试使用Margin属性再次

+0

我已经尝试在您的回复之前很长时间设置Margin =“ - 880,0,0,0”,但当我最大化我的窗口时,保证金属性不起作用。 – autopilot

+0

@autopilot,我编辑了我的答案。 – StepUp

+0

它不工作,你告诉的方式。我已经尝试过两种。 @StepUp – autopilot

0

你再整为自己的MetroWindow。为您的需求,最简单的方法是创建一个自定义的资源字典和MetroWindow.xaml复制到其中并更改以下行Grid.Column="0"MetroWindow.xaml

但是不要忘了加载修改后的资源在App.xaml

5

你可以做这样的事情

  1. 从标题栏中删除标题
  2. 添加MetroWindow.LeftWindowCommands标签
  3. 添加Windows命令标签内LeftWindowCommands
  4. 将一个StackPanel或网格,并把什么你想在标题栏

代码:

 <controls:MetroWindow.LeftWindowCommands> 
      <controls:WindowCommands> 
      <StackPanel Name="menuHolder" Orientation="Horizontal"> 
       <TextBlock Padding="10,5,10,5" Text="My Window"></TextBlock> 
       <Menu Name="mymenu" Margin="0,5,0,0"> 
        <MenuItem Name="File" Header="File"> 
         <MenuItem Name="Open" Header="Open"/> 
         <MenuItem Name="Close" Header="Close"/> 
        </MenuItem> 
        <MenuItem Name="Edit" Header="Edit"> 
         <MenuItem Name="Copy" Header="Copy"/> 
         <MenuItem Name="Paste" Header="Paste"/> 
        </MenuItem> 
       </Menu> 
      </StackPanel> 
     </controls:WindowCommands>