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 4 Ribbon 开发 之 应用程序菜单(Application Menu)
原文:WPF 4 Ribbon 开发 之 应用程序菜单(Application Menu)      在上一篇中我们完成了快捷工具栏的开发,本篇将讲解应用程序菜单开发的相关内容。如下图所示,点击程序窗口左上角的记事本图标(Application Button)会显示出应用程序菜单(Application Menu)列表,列表中的按键即为软件的一些基本功能。
2113 0
|
6月前
|
算法 C# UED
浅谈WPF之控件模板和数据模板
WPF不仅支持传统的Windows Forms编程的用户界面和用户体验设计,同时还推出了以模板为核心的新一代设计理念。在WPF中,通过引入模板,将数据和算法的“内容”和“形式”进行解耦。模板主要分为两大类:数据模板【Data Template】和控件模板【Control Template】。
98 8
WPF ComboBox 数据模板
WPF中的控件,有不少都是需要绑定数据的,例如ComboBox控件可以绑定数据,从下拉列表中进行选择。默认情况下,ComboBox控件绑定的数据从显示上比较单一,只能显示固定的文本信息。而为了更好的突出数据展现效果,这里需要使用到WPF中的另一种强大的功能,即数据模板(DataTemplate )
1115 0
WPF ComboBox 数据模板
|
C#
WPF QuickStart系列之样式和模板(Style and Template)
原文:WPF QuickStart系列之样式和模板(Style and Template) 在WPF桌面程序中,当我们想构建一个统一的UI表现时(在不同操作系统下,显示效果一致),此时我们就需要使用到WPF中的样式和模板技术。
991 0
|
C# BI
WPF中通过代码定义模板
原文:WPF中通过代码定义模板 WPF中可以再XAML中定义模板,也可以通过C#代码定义模板,通过代码可能更清楚的看清其逻辑,而且代码的好处就是可以随时动态的去操作,而在XAML中定义的一般都是静态的。
904 0
|
C#
WPF自定义控件(二)の重写原生控件样式模板
原文:WPF自定义控件(二)の重写原生控件样式模板        话外篇: 要写一个圆形控件,用Clip,重写模板,去除样式引用圆形图片可以有这三种方式。   开发过程中,我们有时候用WPF原生的控件就能实现自己的需求,但是样式、风格并不能满足我们的需求,那么我们该怎么办呢?----自定义样式与模板。
1217 0
|
C# 容器
WPF模板(二)应用
原文:WPF模板(二)应用           本次内容来源于电子书,和上一篇一样。 在WPF中有三大模板ControlTemplate,ItemsPanelTemplate,DataTemplate.其中ControlTemplate和ItemsPanelTemplate是控件模板,DataTemplate是数据模板,他们都派生自FrameworkTemplate抽象类。
789 0
|
C#
WPF 自定义模板 Button闪亮效果
原文:WPF 自定义模板 Button闪亮效果 Button的选中Effect,我们看下下面的效果:   让我们再放大一点: 怎么设置上面样式呢?直接设置Button的Effect,有点问题,因为Effect不是四周环绕的。
567 0
|
C#
WPF XAML 资源样式模板属性存放位置
原文:WPF XAML 资源样式模板属性存放位置 WPF的XAML 资源申明 类似HTML。 整体来说分3种1.行类资源样式属性 1.1 行内属性 1.2 行内样式 模板(没多大意义) ...
1109 0
|
C#
WPF ListBoxItem模板中添加CheckBox选中问题
原文:WPF ListBoxItem模板中添加CheckBox选中问题 是这样的,需要一个ListBox来展示照片,并添加一个选中的CheckBox.
1607 0