WPF中的菜单模板

简介: 原文:WPF中的菜单模板 资源字典代码如下: ...
原文: WPF中的菜单模板

资源字典代码如下:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <!--Menu控件模板-->
    <ControlTemplate x:Key="mycontroltemplate" TargetType="{x:Type Menu}">
        <Border Margin="2"
                Background="Chocolate"
                CornerRadius="3"
                SnapsToDevicePixels="True">
            <ItemsPresenter/>
        </Border>
    </ControlTemplate>

    <!--MenuItem控件模板-->
    <ControlTemplate x:Key="mymenuitemtemplate"
                   TargetType="MenuItem">
        <Border Name="Border">
            <Grid>
                <ContentPresenter
          Margin="10"
          ContentSource="Header"
          RecognizesAccessKey="True"/>
                <Popup
                    AllowsTransparency="True"
          Name="Popup"
          Placement="Top"
          IsOpen="{TemplateBinding IsSubmenuOpen}"
          Focusable="False"
          PopupAnimation="Slide">
                    <Border
            CornerRadius="30"
            Name="SubmenuBorder"
            SnapsToDevicePixels="True">
                        <StackPanel
              IsItemsHost="True"
              KeyboardNavigation.DirectionalNavigation="Cycle" />
                        <Border.Background>
                            <DrawingBrush>
                                <DrawingBrush.Drawing>
                                    <GeometryDrawing Brush="YellowGreen">
                                        <GeometryDrawing.Geometry>
                                            <CombinedGeometry GeometryCombineMode="Exclude">
                                                <CombinedGeometry.Geometry1>
                                                    <EllipseGeometry RadiusX="20" RadiusY="20"/>
                                                </CombinedGeometry.Geometry1>
                                                <CombinedGeometry.Geometry2>
                                                    <EllipseGeometry RadiusX="10" RadiusY="10"/>
                                                </CombinedGeometry.Geometry2>
                                            </CombinedGeometry>
                                        </GeometryDrawing.Geometry>
                                    </GeometryDrawing>
                                </DrawingBrush.Drawing>
                            </DrawingBrush>
                        </Border.Background>
                   </Border>
                </Popup>
            </Grid>
        </Border>
        <!--可有可无________________________________________________________________________________-->
        <!--<ControlTemplate.Triggers>
            <Trigger Property="IsSuspendingPopupAnimation" Value="true">
                <Setter TargetName="Popup" Property="PopupAnimation" Value="None"/>
            </Trigger>
            <Trigger Property="IsHighlighted" Value="true">
                <Setter TargetName="Border" Property="Background"
                Value="Transparent"/>
                <Setter TargetName="Border" Property="BorderBrush"
                Value="Transparent"/>
            </Trigger>
            <Trigger SourceName="Popup" Property="Popup.AllowsTransparency" Value="True">
                <Setter TargetName="SubmenuBorder" Property="CornerRadius" Value="0,0,4,4"/>
                <Setter TargetName="SubmenuBorder" Property="Padding" Value="0,0,0,3"/>
            </Trigger>
            <Trigger Property="IsEnabled" Value="False">
                <Setter Property="Foreground" Value="Black"/>
            </Trigger>
        </ControlTemplate.Triggers>-->
        <!--可有可无________________________________________________________________________________-->
    </ControlTemplate>

</ResourceDictionary>

窗体XAML代码如下:

<Window x:Class="WPF中的菜单模板.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <Window.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="/MyDictionary/MyDictionary.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Window.Resources>
    <DockPanel>
            <Menu DockPanel.Dock="Bottom"
                  Template="{StaticResource mycontroltemplate}">
                <MenuItem Header="开始">
                    <MenuItem Header="开始"></MenuItem>
                    <MenuItem Header="开始"></MenuItem>
                    <MenuItem Header="开始"></MenuItem>
                    <MenuItem Header="开始"></MenuItem>
                </MenuItem>
                <Menu.ItemContainerStyle>
                    <Style TargetType="{x:Type MenuItem}">
                        <Setter Property="Template" Value="{StaticResource mymenuitemtemplate}"/>
                    </Style>
                </Menu.ItemContainerStyle>
            </Menu>
        <Popup></Popup>
    </DockPanel>
</Window>

目录
相关文章
|
C#
WPF 左键单击弹出菜单 ContextMenu
原文:WPF 左键单击弹出菜单 ContextMenu WPF中的ContextMenu在XAML中可直接做出来,但是仅限于右键弹出菜单,如果需要添加左键弹出功能,只需要在事件中添加Click事件 XMAL代码如下 ...
2910 0
|
C#
WPF 4 Ribbon 开发 之 应用程序菜单(Application Menu)
原文:WPF 4 Ribbon 开发 之 应用程序菜单(Application Menu)      在上一篇中我们完成了快捷工具栏的开发,本篇将讲解应用程序菜单开发的相关内容。如下图所示,点击程序窗口左上角的记事本图标(Application Button)会显示出应用程序菜单(Application Menu)列表,列表中的按键即为软件的一些基本功能。
2234 0
|
4月前
|
开发者 C# 存储
WPF开发者必读:资源字典应用秘籍,轻松实现样式与模板共享,让你的WPF应用更上一层楼!
【8月更文挑战第31天】在WPF开发中,资源字典是一种强大的工具,用于共享样式、模板、图像等资源,提高了应用的可维护性和可扩展性。本文介绍了资源字典的基础知识、创建方法及最佳实践,并通过示例展示了如何在项目中有效利用资源字典,实现资源的重用和动态绑定。
118 0
|
4月前
|
开发者 C# 存储
WPF开发者必读:样式与模板的艺术,轻松定制UI外观,让你的应用程序更上一层楼!
【8月更文挑战第31天】在WPF应用开发中,样式与模板是实现美观界面与一致性的关键工具。样式定义了控件如字体、颜色等属性,而模板则允许自定义控件布局与子控件,两者均可存储于`.xaml`文件中。本文介绍了样式与模板的基础知识,通过示例展示了如何创建并应用它们来改变按钮的外观,从而提升用户体验。
105 0
|
4月前
|
存储 开发框架 前端开发
循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(9) -- 实现系统动态菜单的配置和权限分配
循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(9) -- 实现系统动态菜单的配置和权限分配
|
算法 C# UED
浅谈WPF之控件模板和数据模板
WPF不仅支持传统的Windows Forms编程的用户界面和用户体验设计,同时还推出了以模板为核心的新一代设计理念。在WPF中,通过引入模板,将数据和算法的“内容”和“形式”进行解耦。模板主要分为两大类:数据模板【Data Template】和控件模板【Control Template】。
222 8
WPF-Binding问题-模板样式使用Binding TemplatedParent与TemplateBinding区别
WPF-Binding问题-模板样式使用Binding TemplatedParent与TemplateBinding区别
258 0
WPF ComboBox 数据模板
WPF中的控件,有不少都是需要绑定数据的,例如ComboBox控件可以绑定数据,从下拉列表中进行选择。默认情况下,ComboBox控件绑定的数据从显示上比较单一,只能显示固定的文本信息。而为了更好的突出数据展现效果,这里需要使用到WPF中的另一种强大的功能,即数据模板(DataTemplate )
1259 0
WPF ComboBox 数据模板
|
C#
WPF QuickStart系列之样式和模板(Style and Template)
原文:WPF QuickStart系列之样式和模板(Style and Template) 在WPF桌面程序中,当我们想构建一个统一的UI表现时(在不同操作系统下,显示效果一致),此时我们就需要使用到WPF中的样式和模板技术。
1041 0
|
C# BI
WPF中通过代码定义模板
原文:WPF中通过代码定义模板 WPF中可以再XAML中定义模板,也可以通过C#代码定义模板,通过代码可能更清楚的看清其逻辑,而且代码的好处就是可以随时动态的去操作,而在XAML中定义的一般都是静态的。
930 0