2012-10-18 24 views
2

下面是代碼:我在xaml中做了一個菜單樣式,但是我怎麼能把子菜單的子菜單放在正確的方向呢?

<Style TargetType="{x:Type MenuItem}"> 


    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type MenuItem}"> 

       <Border Name="Border" > 
        <Grid> 
         <ContentPresenter Margin="6,3,10,3" ContentSource="Header" RecognizesAccessKey="True" /> 
         <Popup Width="auto" AllowsTransparency="True" Name="Popup" Placement="Bottom" IsOpen="{TemplateBinding IsSubmenuOpen}" Focusable="False" PopupAnimation="Fade"> 
          <Border Opacity="1" Name="SubmenuBorder" SnapsToDevicePixels="True" > 
           <Border.Background> 
            <SolidColorBrush Color="#FF9FD3F3"/> 
           </Border.Background> 
           <StackPanel IsItemsHost="True" KeyboardNavigation.DirectionalNavigation="Cycle" /> 
           <Border.BorderBrush> 
            <SolidColorBrush Color="Pink"></SolidColorBrush> 
           </Border.BorderBrush> 
           <Border.BorderThickness> 
            <Thickness Bottom="3" Top="3" Left="3" Right="3" ></Thickness> 
           </Border.BorderThickness> 
          </Border> 
         </Popup> 
        </Grid> 

       </Border> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsSuspendingPopupAnimation" Value="True"> 
         <Setter TargetName="Popup" Property="PopupAnimation" Value="Fade"/> 
        </Trigger> 

        <Trigger Property="IsMouseOver" Value="True"> 
         <Setter Property="Effect" Value="{StaticResource dropShadow}"/> 
         <Setter TargetName="Border" Property="Background" Value="#f9cef9"/> 

        </Trigger>      


        **<Trigger SourceName="Popup" Property="Popup.AllowsTransparency" Value="True"> 
         <Setter TargetName="SubmenuBorder" Property="Padding" Value="10,0,0,3"/> 
        </Trigger>** 




       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 


</Style> 

我怎樣才能把方向右側? 這是一個水平菜單,當我點擊子菜單下拉菜單,沒錯,但我有一個子菜單子菜單,我想讓它們在正確的方向打開不下拉

回答

1

彈出菜單佈局設置爲「底部」在上WpfToolkit SplitButton下面的代碼 「右」:

要包括工具箱,添加行以最高:

xmlns:wpfTools="http://schemas.xceed.com/wpf/xaml/toolkit" 

然後..

  <wpfTools:SplitButton Command="local:MainWindow.***" ToolTip="Resolutions"> 
       <wpfTools:SplitButton.DropDownContent> 
        <Menu x:Name="***"> 
         <Menu.Resources> 

          <Style TargetType="{x:Type MenuItem}"> 
           <Setter Property="Template"> 
            <Setter.Value> 
             <ControlTemplate TargetType="{x:Type MenuItem}"> 
              <Border Name="Border" > 
               <Grid> 
                <ContentPresenter Margin="6,3,10,3" ContentSource="Header" RecognizesAccessKey="True" /> 
                <Popup Width="auto" AllowsTransparency="True" Name="Popup" Placement="Right" IsOpen="{TemplateBinding IsSubmenuOpen}" Focusable="False" PopupAnimation="Fade"> 
                 <Border Opacity="1" Name="SubmenuBorder" SnapsToDevicePixels="True" > 
                  <Border.Background> 
                   <SolidColorBrush Color="#FF9FD3F3"/> 
                  </Border.Background> 
                  <StackPanel IsItemsHost="True" KeyboardNavigation.DirectionalNavigation="Cycle" /> 
                  <Border.BorderBrush> 
                   <SolidColorBrush Color="Pink"></SolidColorBrush> 
                  </Border.BorderBrush> 
                  <Border.BorderThickness> 
                   <Thickness Bottom="3" Top="3" Left="3" Right="3" ></Thickness> 
                  </Border.BorderThickness> 
                 </Border> 
                </Popup> 
               </Grid> 
              </Border> 
              <ControlTemplate.Triggers> 
               <Trigger Property="IsSuspendingPopupAnimation" Value="True"> 
                <Setter TargetName="Popup" Property="PopupAnimation" Value="Fade"/> 
               </Trigger> 
               <Trigger Property="IsMouseOver" Value="True"> 
                <!-- 
                <Setter Property="Effect" Value="{StaticResource dropShadow}"/> 
                --> 
                <Setter TargetName="Border" Property="Background" Value="#f9cef9"/> 
               </Trigger> 
               <Trigger SourceName="Popup" Property="Popup.AllowsTransparency" Value="True"> 
                <Setter TargetName="SubmenuBorder" Property="Padding" Value="10,0,0,3"/> 
               </Trigger> 
              </ControlTemplate.Triggers> 
             </ControlTemplate> 
            </Setter.Value> 
           </Setter> 
          </Style> 
         </Menu.Resources> 

         <Menu.ItemsPanel> 
          <ItemsPanelTemplate> 
           <VirtualizingStackPanel Orientation="Vertical"/> 
          </ItemsPanelTemplate> 
         </Menu.ItemsPanel> 
         <MenuItem Header="Test1"> 

          <MenuItem Header="test 1" /> 
          <MenuItem Header="test 2" /> 
          <MenuItem Header="test 3" /> 
         </MenuItem> 
         <MenuItem Header="Test2"> 
          <MenuItem Header="test 1" /> 
          <MenuItem Header="test 2" /> 
          <MenuItem Header="test 3" /> 
         </MenuItem> 
        </Menu> 

       </wpfTools:SplitButton.DropDownContent> 
       <Image Width="32" Source="***.ico" /> 
      </wpfTools:SplitButton> 

代碼:

     <Menu.ItemsPanel> 
          <ItemsPanelTemplate> 
           <VirtualizingStackPanel Orientation="Vertical"/> 
          </ItemsPanelTemplate> 
         </Menu.ItemsPanel> 

使第一菜單項降垂直而不是默認水平。

相關問題