2014-01-12 155 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>