我有一個包含少量項目的子菜單的菜單。第一次,子菜單打開時,我點擊一個菜單項。在那之後,下一個子菜單在沒有點擊的情況下打開,只是懸停。我不希望其他子菜單在沒有點擊的情況下打開。爲什麼在WPF菜單中自動打開子菜單?
<ControlTemplate x:Key="MenuItemControlTemplate1" TargetType="{x:Type MenuItem}">
<Border x:Name="templateRoot"
Background="{TemplateBinding Background}"
SnapsToDevicePixels="True" Margin="0,-7,0,5">
<Grid VerticalAlignment="Center">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<ContentPresenter x:Name="mainMenuHeaderContainer" Cursor="Hand" Margin="0,0,0,13" ContentTemplate="{TemplateBinding HeaderTemplate}" Content="{TemplateBinding Header}" Grid.Column="1" ContentStringFormat="{TemplateBinding HeaderStringFormat}" ContentSource="Header" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
<Popup x:Name="PART_Popup" AllowsTransparency="True" Focusable="False" IsOpen="{Binding IsSubmenuOpen, RelativeSource={RelativeSource TemplatedParent}}" PopupAnimation="{DynamicResource {x:Static SystemParameters.MenuPopupAnimationKey}}" Placement="Bottom">
<Border x:Name="SubMenuBorder" BorderBrush="#595959" BorderThickness=".5,0,0,0" Background="#32a3cf">
<ScrollViewer x:Name="SubMenuScrollViewer" Style="{DynamicResource {ComponentResourceKey ResourceId=MenuScrollViewer, TypeInTargetAssembly={x:Type FrameworkElement}}}">
<Grid RenderOptions.ClearTypeHint="Enabled">
<Canvas HorizontalAlignment="Left" Height="0" VerticalAlignment="Top" Width="0">
<Rectangle x:Name="OpaqueRect" Fill="#666" Height="{Binding ActualHeight, ElementName=SubMenuBorder}" Width="{Binding ActualWidth, ElementName=SubMenuBorder}"/>
</Canvas>
<ItemsPresenter x:Name="ItemsPresenter"/>
</Grid>
</ScrollViewer>
</Border>
</Popup>
</Grid>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsSuspendingPopupAnimation" Value="True">
<Setter Property="PopupAnimation" TargetName="PART_Popup" Value="None"/>
</Trigger>
<Trigger Property="IsHighlighted" Value="True">
<Setter Property="Background" TargetName="templateRoot" Value="#32a3cf"/>
</Trigger>
<Trigger Property="IsKeyboardFocusWithin" Value="True">
<Setter TargetName="templateRoot" Property="Background" Value="#32a3cf" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
<ControlTemplate x:Key="MenuItemControlTemplate2" TargetType="{x:Type MenuItem}">
<Border x:Name="templateRoot" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness=".5,0,.5,.5" Background="{TemplateBinding Background}" SnapsToDevicePixels="True">
<Grid Margin="-1" Cursor="Hand">
<Grid.ColumnDefinitions>
<ColumnDefinition MinWidth="22" SharedSizeGroup="MenuItemIconColumnGroup" Width="Auto"/>
<ColumnDefinition Width="13"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="30"/>
<ColumnDefinition SharedSizeGroup="MenuItemIGTColumnGroup" Width="Auto"/>
<ColumnDefinition Width="20"/>
</Grid.ColumnDefinitions>
<ContentPresenter x:Name="menuHeaderContainer" ContentTemplate="{TemplateBinding HeaderTemplate}" Content="{TemplateBinding Header}" Grid.Column="2" ContentStringFormat="{TemplateBinding HeaderStringFormat}" ContentSource="Header" HorizontalAlignment="Left" Margin="{TemplateBinding Padding}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="Center"/>
<TextBlock x:Name="menuGestureText" Grid.Column="4" Margin="{TemplateBinding Padding}" Opacity="0.7" Text="{TemplateBinding InputGestureText}" VerticalAlignment="Center"/>
</Grid>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsHighlighted" Value="True">
<Setter Property="BorderBrush" TargetName="templateRoot" Value="White"/>
<Setter Property="Background" TargetName="templateRoot" Value="#32a3cf"/>
<Setter Property="TextBlock.Foreground" TargetName="menuHeaderContainer" Value="White" />
</Trigger>
<!--<Trigger Property="IsEnabled" Value="False">
<Setter Property="TextElement.Foreground" TargetName="templateRoot" Value="#FF707070"/>
</Trigger>-->
<!--<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsHighlighted" Value="True"/>
<Condition Property="IsEnabled" Value="False"/>
</MultiTrigger.Conditions>
<Setter Property="Background" TargetName="templateRoot" Value="#0A000000"/>
<Setter Property="BorderBrush" TargetName="templateRoot" Value="#21000000"/>
</MultiTrigger>-->
</ControlTemplate.Triggers>
</ControlTemplate>
<Menu x:Name="menu_main_project" Grid.Column="1" Grid.Row="0">
<MenuItem Height="42" Template="{DynamicResource MenuItemControlTemplate1}" Width="140">
<MenuItem.Header>
<DockPanel HorizontalAlignment="Stretch">
<Rectangle x:Name="menuBarApplication" Fill="#32a3cf" Width="140" Height="4" DockPanel.Dock="Top" Margin="0,3,0,0"/>
<Image Source="/Resources/ico_application.png" Stretch="Fill" DockPanel.Dock="Left" Margin="10,2,0,0" Height="19" Width="22">
</Image>
<ContentPresenter x:Name="APPLICATION_MENU" TextBlock.Foreground="#0e526a" Margin="4,0,0,0" Content="Application" DockPanel.Dock="Right" VerticalAlignment="Center"/>
</DockPanel>
</MenuItem.Header>
<!--<MenuItem Header="Learner" x:Name="menuItem_LearnerApplicationHome" Click="OnClick_LearnerApplicationHome"/>-->
<MenuItem Template="{DynamicResource MenuItemControlTemplate2}" Header="DL" x:Name="menuItem_DLApplicationHome" Click="OnClick_DLApplicationHome" Foreground="#0e526a" Margin="-10,0,0,0" Background="White"/>
<MenuItem Template="{DynamicResource MenuItemControlTemplate2}" Header="Adjudication" x:Name="menuItem_Adjudication" Click="OnClick_AdjudicationHome" Foreground="#0e526a" Margin="-10,0,0,0" Background="White"/>
<MenuItem Template="{DynamicResource MenuItemControlTemplate2}" Header="Summary" x:Name="menuItem_Application_Summary" Click="OnClick_ApplicationSummaryHome" Foreground="#0e526a" Margin="-10,0,0,0" Background="White"/>
</MenuItem>
<MenuItem Width="105" Height="42" Template="{DynamicResource MenuItemControlTemplate1}">
<MenuItem.Header>
<DockPanel HorizontalAlignment="Stretch">
<Rectangle x:Name="menuBarCard" Fill="#32a3cf" Width="105" Height="4" DockPanel.Dock="Top" Margin="0,3,0,0"/>
<Image Source="/Resources/ico_card.png" Margin="20,2,0,0" Stretch="Fill" DockPanel.Dock="Left" Height="19" Width="22"/>
<ContentPresenter x:Name="CARD_MENU" Margin="4,0,0,0" Content="Card" TextBlock.Foreground="#0e526a" DockPanel.Dock="Right" VerticalAlignment="Center"/>
</DockPanel>
</MenuItem.Header>
<MenuItem Header="Card" Template="{DynamicResource MenuItemControlTemplate2}" Name="menuItem_CardHome" Click="OnClick_CardkHome" Margin="-10,0,0,0" Background="White" Foreground="#0e526a"/>
<MenuItem Header="Summary" Template="{DynamicResource MenuItemControlTemplate2}" x:Name="menuItem_Card_Summary" Click="OnClick_CardSummaryHome" Foreground="#0e526a" Margin="-10,0,0,0" Background="White"/>
<!-- Menu -->
</MenuItem>
<MenuItem Width="105" Height="42" Template="{DynamicResource MenuItemControlTemplate1}">
<MenuItem.Header>
<DockPanel HorizontalAlignment="Stretch">
<Rectangle x:Name="menuBarStock" Fill="#32a3cf" Width="105" Height="4" DockPanel.Dock="Top" Margin="0,3,0,0"/>
<Image Source="/Resources/ico_stock.png" Margin="18,2,0,0" Stretch="Fill" DockPanel.Dock="Left" Height="19" Width="22"/>
<ContentPresenter x:Name="STOCK_MENU" Margin="4,0,0,0" Content="Stock" TextBlock.Foreground="#0e526a" DockPanel.Dock="Right" VerticalAlignment="Center"/>
</DockPanel>
</MenuItem.Header>
<MenuItem Header="Stock" Template="{DynamicResource MenuItemControlTemplate2}" Name="menuItem_StockHome" Click="OnClick_StockHome" Margin="-10,0,0,0" Background="White" Foreground="#0e526a"/>
<MenuItem Header="Item" Template="{DynamicResource MenuItemControlTemplate2}" Name="menuItem_ItemHome" Click="OnClick_ItemHome" Margin="-10,0,0,0" Background="White" Foreground="#0e526a"/>
<MenuItem Header="Summary" Template="{DynamicResource MenuItemControlTemplate2}" x:Name="menuItem_Stock_Summary" Click="OnClick_BoxSummaryHome" Foreground="#0e526a" Margin="-10,0,0,0" Background="White"/>
</MenuItem>
</Menu>
也許你應該添加一些代碼......以便我們可以看看可能是錯誤的。 – r41n
它有什麼問題?你想在button_click上打開它們嗎? –
我不想讓其他子菜單在沒有點擊的情況下打開。 –