精华内容
下载资源
问答
  • WPF 超炫界面模板

    热门讨论 2014-03-19 13:37:04
    ModernUI.1.0.4.win8极简化界面设计.用户可以基于ModernUI来构造一个非常通用的、插件化的WPF开发框架,有兴趣的朋友可以下载使用!
  • WPF界面修改

    2018-12-25 11:22:11
    wpf界面模板里不停的渲染,强制控制其中一列的操作。
  • WPF控件模板和数据模板的区别

    千次阅读 2019-08-10 23:46:46
    是的,最近在看WPF,也算是加深下c#的知识,毕竟winform的界面有的时候真的不是很美观。WPF模板与Style不同,Style只能改变控件的已有属性值(比如颜色字体)来定制控件,形同HTML中的CSS,但控件模板可以改变控件...

    是的,最近在看WPF,也算是加深下c#的知识,毕竟winform的界面有的时候真的不是很美观。WPF中模板与Style不同,Style只能改变控件的已有属性值(比如颜色字体)来定制控件,形同HTML中的CSS,但控件模板可以改变控件的内部结构(VisualTree,视觉树)来完成更为复杂的定制,其实WPF的每一个控件都有一个默认的模板。

    数据模板跟控件模板的区别主要体现在,通常情况下,控件模板只是为了自己而呈现的,并不反映基础数据。 例如,一个Button不会被绑定到一个业务对象 - 它只是可以被点击。 而ContentControl或ListBox通常显示为可以为用户呈现数据。因此,DataTemplate用于为底层数据提供可视结构,而ControlTemplate与底层数据无关,仅为控件本身提供可视化布局。

    ControlTemplate通常只包含TemplateBinding表达式,绑定回控件本身的属性,而DataTemplate将包含标准绑定表达式,并绑定到其DataContext(业务/域对象或视图模型)的属性,它们面对的绑定对象类型不一致。

    对此,查看下面简单的数据模板和控件模板示例,体验区别:

    <Window
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:local="clr-namespace:WpfBook"
            xmlns:Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero" x:Class="WpfBook.ImageButton"
            Title="ImageButton" Height="300" Width="300" Activated="Window_Activated">
        <Window.Resources>
            <ControlTemplate x:Key="ImageButton-ControlTemplate" TargetType="{x:Type Button}">
                <Grid>
                    <Ellipse Width="{TemplateBinding Width}" Height="{TemplateBinding Height}"  Fill="{TemplateBinding Background}"/>
                    <TextBlock Margin="{TemplateBinding Padding}" VerticalAlignment="Center"  HorizontalAlignment="Center"  Text="{TemplateBinding Content}" />
                </Grid>
                <ControlTemplate.Triggers>
                    <Trigger Property="IsMouseOver" Value="true">
                        <Setter Property="Foreground" Value="Red" />
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
     
            <DataTemplate x:Key="ImageButton-DataTemplate" DataType="{x:Type local:Person}">
                <TextBlock x:Name="tb" Text="{Binding Name}" Margin="1" />
                <DataTemplate.Triggers>
                    <DataTrigger Binding="{Binding IsOnline}" Value="False">
                        <Setter TargetName="tb" Property="Foreground" Value="Gray" />
                    </DataTrigger>
                </DataTemplate.Triggers>
            </DataTemplate>
     
            <DataTemplate x:Key="Item-DataTemplate" DataType="{x:Type local:Person}">
                <TextBlock x:Name="tb" Text="{Binding Name}" Margin="1" />
                <DataTemplate.Triggers>
                    <DataTrigger Binding="{Binding IsOnline}" Value="False">
                        <Setter TargetName="tb" Property="Foreground" Value="Red" />
                    </DataTrigger>
                </DataTemplate.Triggers>
            </DataTemplate>
        </Window.Resources>
        <StackPanel Orientation="Vertical">
            <Button Template="{StaticResource ImageButton-ControlTemplate}" Content="abcde"/>
            <Button x:Name="ddd" ContentTemplate="{StaticResource ImageButton-DataTemplate}" Content="{Binding APerson}"/>
            <ListBox x:Name="list1" ItemTemplate="{StaticResource Item-DataTemplate}" ItemsSource="{Binding Persons}"/>
        </StackPanel>
    </Window>

    这里补充点: 

    参考数据绑定思维,数据模板通过Content属性指定数据源,将数据先绑定到Content属性上,通过ContentTemplate指定数据处理方式。Button是数据content 对应的模板是ContentTemplate,Button是control对应的模板是Template。
    数据模板中设定属性,必须要使用指定TargetName,而控件模板不需要。
    数据模板中除了给ContentTemplate,例子中还可以设定给ItemsControl的ItemTemplate属性。除此以外还可以设定给GridViewColumn的CellTemplate属性。数据模板在页面xaml内部定义,而控件模板通常放到样式文件中。

     

    参考https://blog.csdn.net/jfyy/article/details/80743009

    展开全文
  • C# WPF 按钮模板

    千次阅读 2016-04-09 12:04:34
    C# WPF的交互界面编程相较于MFC强大且方便的多,以至于用惯了MFC的我刚开始学时有点不知所措,所幸经过一段时间摸索,终于有些明白了。 就拿做一个按钮模板为例: 在直接从工具箱拖下来没有修改的情况下,按钮的...

        C# WPF的交互界面编程相较于MFC强大且方便的多,以至于用惯了MFC的我刚开始学时有点不知所措,所幸经过一段时间摸索,终于有些明白了。
        就拿做一个按钮模板为例:
    在直接从工具箱拖下来没有修改的情况下,按钮的视觉效果大概是如下图所示的样子:

    普通按钮视觉效果图

        如果是一个交给用户使用的程序,这样的界面怎么看都是粗糙的。在WPF中,可以通过在xaml文件中编写如下的按钮模板,将按钮的样式完全改变。模板的代码如下(具体的解释都已经在代码的注释中给出):

    <Window.Resources>
    <!--设置模板目标为Button,而x:Key为其模板名称,按钮对象要应用该模板风格需要设置相应的Style属性与
     x:Key指定的名称绑定,如下面的实例。如果模板没有显式赋值x:Key对象,则所有Button都具有该模板的风格-->
        <Style TargetType="{x:Type Button}" x:Key="WhiteButton">
            <!--设置按钮背景色为透明-->
            <Setter Property="Control.Background"  Value="{x:Null}"/>
            <!--设置按钮为无边框样式-->
            <Setter Property="Control.BorderBrush" Value="{x:Null}"/>
            <!--设置字体样式-->
            <Setter Property="Control.FontFamily" Value="华文行楷"/>
            <Setter Property="Control.FontSize" Value="32"/>
            <Setter Property="Control.Foreground" Value="Black"/>
            <Setter Property="Control.FontWeight" Value="Bold"/>
            <Setter Property="Control.VerticalAlignment" Value="Top"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type Button}">
                        <Grid>
                            <!--设置一般情况下按钮的形态-->
                            <Border x:Name="background" Height="{TemplateBinding Height}" Width="{TemplateBinding Width}" Opacity="0"
                                Background="{x:Null}" 
                                BorderBrush="{x:Null}"      
                                CornerRadius="2">
                            </Border>
                            <Grid>
                                <ContentPresenter  HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                            </Grid>
                        </Grid>
                        <ControlTemplate.Triggers>
                            <!--当鼠标悬停在按钮上方时,按钮形态设置-->
                            <Trigger Property="IsMouseOver" Value="true">
                                <Setter Property="Opacity" Value="1" TargetName="background"/>
                                <Setter Property="Foreground" Value="red"/>
                                <Setter Property="Control.FontSize" Value="40"/>
                            </Trigger>
                            <!--当鼠标按下时,按钮形态设置-->
                            <Trigger Property="IsPressed" Value="true">
                                <Setter Property="Background" Value="{x:Null}"/>
                            </Trigger>
                            <!--当按钮不可用时,按钮形态设置-->
                            <Trigger Property="IsEnabled" Value="false">
                                <Setter Property="Foreground" Value="Gray"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </Window.Resources>
    

        有了模板,在定义按钮布局时调用该模板即可,代码如下:

    <Grid>
        <Button x:Name="moon" Style="{StaticResource WhiteButton}" Content="当年明月" Margin="98,83,98,0" VerticalAlignment="Top" Height="49"/>
        <Button x:Name="hollow" Style="{StaticResource WhiteButton}" Content="空谷深井" Margin="98,137,98,0" VerticalAlignment="Top" Height="49"/>
        <Button x:Name="flower" IsEnabled="False" Style="{StaticResource WhiteButton}" Content="彼岸花开" Margin="98,191,98,0" VerticalAlignment="Top" Height="49"/>
    </Grid>

        则我们可以得到如下图所示的美化过的界面(如果觉得外观还不满意,可以进一步修改模板的视觉部分,其他控件样式的模板基本跟本示例差不多,以后不会再做赘述):

    利用按钮模板修改后按钮视觉效果图

        圆角按钮的模板如下:

     <Button x:Name="button" Content="Read Old" HorizontalAlignment="Left" Margin="519,375,0,0" VerticalAlignment="Top" Width="94" Height="34" Background="#FFFFC000" BorderBrush="Black" BorderThickness="1">
        <Button.Template>
            <ControlTemplate TargetType="{x:Type Button}">
                <Border BorderBrush="{TemplateBinding Control.BorderBrush}" BorderThickness="0" CornerRadius="5,5,5,5" Name="PART_Background" Background="#FFFFC000">
                    <ContentPresenter Content="{TemplateBinding ContentControl.Content}" HorizontalAlignment="Center" VerticalAlignment="Center" />
                </Border>
                <ControlTemplate.Triggers>
                    <Trigger Property="UIElement.IsMouseOver" Value="True">
                        <Setter Property="Border.Background" TargetName="PART_Background">
                            <Setter.Value>
                                <LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
                                    <GradientStop Color="Lime" Offset="0.0" />
                                    <GradientStop Color="#66CC33" Offset="0.5" />
                                    <GradientStop Color="Gold" Offset="0.0" />
                                </LinearGradientBrush>
                            </Setter.Value>
                        </Setter>
                    </Trigger>
                    <Trigger Property="ButtonBase.IsPressed" Value="True">
                        <Setter Property="UIElement.Effect">
                            <Setter.Value>
                                <DropShadowEffect BlurRadius="10" Color="#FF0033" Direction="0" Opacity="0.6" RenderingBias="Performance" ShadowDepth="0" />
                            </Setter.Value>
                        </Setter>
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Button.Template>
    </Button>
    展开全文
  • WPF 模板

    2019-10-07 01:21:57
    WPF系统不但支持传统的Winfrom编程的用户界面和用户体验设计,更支持使用专门的设计工具Blend进行专业设计,同时还推出了以模板为核心的新一代设计理念。 1.模板的内涵 作为表现形式,每个控件都是为了实现某种...

      WPF系统不但支持传统的Winfrom编程的用户界面和用户体验设计,更支持使用专门的设计工具Blend进行专业设计,同时还推出了以模板为核心的新一代设计理念。

    1. 模板的内涵

        作为表现形式,每个控件都是为了实现某种用户操作算法和直观显示某种数据而生,一个控件看上去是什么样子由它的“算法内容”和“数据内容"决定,这就是内容决定形式,这里,我们引入两个概念:

    控件的算法内容:控件能展示哪些数据、具有哪些方法、能响应哪些操作、能激发什么事件,简而言之就是控件的功能,它们是一组相关的算法逻辑。
    控件的数据内容:控件具体展示的数据是什么。


         以往的GUI开发技术(ASP.NET+Winform)中,控件内部逻辑和数据是固定的,程序员不能改变;对于控件的外观,程序员能做的改变也非常的有限,一般也就是设置控件的属性,想改变控件的内部结构是不可能的。如果想扩展一个控件的功能或者更改器外观让其更适应业务逻辑,哪怕只是一丁点的改变,也需要创建控件的子类或者创建用户控件。造成这个局面的根本原因是数据和算法的“形式”和“内容”耦合的太紧了。


        在WPF中,通过引入模板,微软将数据和算法的内容与形式解耦了。WPF中的Template分为两大类:
    ControlTemplate:是算法内容的表现形式,一个控件怎么组织其内部结构才能让它更符合业务逻辑、让用户操作起来更舒服就是由它来控制的。它决定了控件“长成什么样子”,并让程序员有机会在控件原有的内部逻辑基础上扩展自己的逻辑。
    DataTemplate:是数据内容的展示方式,一条数据显示成什么样子,是简单的文本还是直观的图形就由它来决定了。


    Template就是数据的外衣-----ControlTemplate是控件的外衣,DataTemplate是数据的外衣。

    2. 数据的外衣DataTemplate

        WPF不但支持UserControl还支持DataTemplate为数据形成视图。不要以为DataTemplate有多难!从UserControl升级到DataTemplate一般就是复制,粘贴一下再改几个字符的事儿。

    DataTemplate常用的地方有三处,分别是:
    ContentControl的ContentTemplate属性,相当于给ContentControl的内容穿衣服。
    ItemsControl的ItemTemplate,相当于给ItemControl的数据条目穿衣服。
    GridViewColumn的CellTempldate属性,相当于给GridViewColumn的数据条目穿衣服。

        事件驱动是控件和控件之间沟通或者说是形式和形式之间的沟通,数据驱动则是数据与控件之间的沟通,是内容决定形式。使用DataTemplate就可以方便的把事件驱动模式转换为数据驱动模式。

     

        让我们用一个例子体现DataTemplate的使用。例子实现的需求是这样的:有一列汽车数据,这列数据显示在ListBox里面,要求ListBox的条目显示汽车的厂商图标和简要参数,单击某个条目后在窗体的详细内容区显示汽车的图片和详细参数。厂商的Logo和汽车的照片都是要用到的,所以先在项目中建立资源管理目录并把图片添加进来。Logo文件名与厂商的名称一致,照片的名称则与车名一致。组织结构如图:

     

    创建Car数据类型:

    /// <summary>  
    /// Car数据类型 -- 必须定义成属性{ get; set; }  
    /// </summary>  
    public class Car  
    {  
        public string Name { get; set; }  
        public string ImagePath { get; set; }  
        public string Automarker { get; set; }  
        public string Year { get; set; }  
    }  

    汽车厂商和名称不能直接拿来作为图片路径,这时就要使用Converter:

    /// <summary>  
        /// 路径转图片  
        /// </summary>  
        public class PathToImage:IValueConverter  
        {  
            public object Convert(object value, Type targetType, object parameter, CultureInfo culture)  
            {  
                string url = (string)value;  
                return(new BitmapImage(new Uri(url, UriKind.Relative)));  
            }  
      
            public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)  
            {  
                throw new NotImplementedException();  
            }  
        }  

    XAML中添加条目模版:

    <DataTemplate x:Key="_carListItemViewTemplate">  
        <Grid Margin="2">  
            <StackPanel Orientation="Horizontal">  
                <Image Source="{Binding Path=Automarker, Converter={StaticResource _path2Image}}" Grid.RowSpan="3"  
                       Width="64" Height="64"></Image>  
                <StackPanel Margin="5,10">  
                    <TextBlock Text="{Binding Name}" FontSize="16" FontWeight="Bold"></TextBlock>  
                    <TextBlock Text="{Binding Year}" FontSize="14"></TextBlock>  
                </StackPanel>  
            </StackPanel>  
        </Grid>  
    </DataTemplate>  

    XAML中添加显示详细信息的模版:

    <DataTemplate x:Key="_carDetailViewTemplate">  
        <Border BorderBrush="Black" BorderThickness="1" CornerRadius="6">  
            <StackPanel Margin="5">  
                <Image Width="400" Height="250" Source="{Binding Path=ImagePath, Converter={StaticResource _path2Image}}"></Image>  
                <StackPanel Orientation="Horizontal" Margin="5, 0">  
                    <TextBlock Text="Name:" FontWeight="Bold" FontSize="20"></TextBlock>  
                    <TextBlock Text="{Binding Path=Name}" FontSize="20" Margin="5, 0"></TextBlock>  
                </StackPanel>  
            </StackPanel>  
        </Border>  
    </DataTemplate> 

    完整的XAML代码:

    <Window x:Class="WpfApplication11.wnd112"  
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"  
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  
            xmlns:local="clr-namespace:WpfApplication11"  
            Title="DataTemplate" Height="350" Width="623">  
        <Window.Resources>  
            <!--Convert-->  
            <local:PathToImage x:Key="_path2Image"></local:PathToImage>  
            <!--DataTemplate for Detail View -->  
            <DataTemplate x:Key="_carDetailViewTemplate">  
                <Border BorderBrush="Black" BorderThickness="1" CornerRadius="6">  
                    <StackPanel Margin="5">  
                        <Image Width="400" Height="250" Source="{Binding Path=ImagePath, Converter={StaticResource _path2Image}}"></Image>  
                        <StackPanel Orientation="Horizontal" Margin="5, 0">  
                            <TextBlock Text="Name:" FontWeight="Bold" FontSize="20"></TextBlock>  
                            <TextBlock Text="{Binding Path=Name}" FontSize="20" Margin="5, 0"></TextBlock>  
                        </StackPanel>  
                    </StackPanel>  
                </Border>  
            </DataTemplate>  
            <!--DataTemplate for Item View -->  
            <DataTemplate x:Key="_carListItemViewTemplate">  
                <Grid Margin="2">  
                    <StackPanel Orientation="Horizontal">  
                        <Image Source="{Binding Path=Automarker, Converter={StaticResource _path2Image}}" Grid.RowSpan="3"  
                               Width="64" Height="64"></Image>  
                        <StackPanel Margin="5,10">  
                            <TextBlock Text="{Binding Name}" FontSize="16" FontWeight="Bold"></TextBlock>  
                            <TextBlock Text="{Binding Year}" FontSize="14"></TextBlock>  
                        </StackPanel>  
                    </StackPanel>  
                </Grid>  
            </DataTemplate>  
        </Window.Resources>      
        <!---Window Content-->  
        <StackPanel Orientation="Horizontal" Margin="5">  
            <UserControl ContentTemplate="{StaticResource _carDetailViewTemplate}" Content="{Binding Path=SelectedItem, ElementName=_listBoxCars}"></UserControl>  
            <ListBox x:Name="_listBoxCars" Width="180" Margin="5,0" ItemTemplate="{StaticResource _carListItemViewTemplate}"></ListBox>  
        </StackPanel>  
    </Window>  

    代码对于初学者来说有点长但是结构非常简单。其中最重要的有两句:
    ContentTemplate="{StaticResource _carDatialViewTemplate}",相当于给一个普通的UserControl穿上了一件外衣、让Car数据以图文并茂的方式展现出来。这件外衣就是x:Key="_carDatialViewTemplate"标记的DataTemplate资源。
    ItemTemplate="{StaticResource _listBoxCars}",把每一件数据的外衣交给ListBox,当ListBox的ItemSource被赋值的时候,ListBox就会为每个条目穿上这件外衣。这件外衣是以x:Key="_listBoxCars"标记的DataTemplate资源。
    因为不再使用事件驱动,而且为数据穿衣服的事也已经自动完成,所以后台的C#代码就非常的简单。窗体的C#代码就只剩下这些:

    /// <summary>  
    /// wnd112.xaml 的交互逻辑  
    /// </summary>  
    public partial class wnd112 : Window  
    {  
        List<Car> _carList;  
        public wnd112()  
        {  
            InitializeComponent();  
      
            _carList = new List<Car>()  
            {  
                new Car(){Name = "Aodi1", ImagePath=@"/Resources/Images/Aodi.jpg", Automarker=@"/Resources/Images/01077_1.png", Year="1990"},  
                new Car(){Name = "Aodi2", ImagePath=@"/Resources/Images/Aodi.png", Automarker=@"/Resources/Images/01077_1.png", Year="2001"},  
            };  
      
            _listBoxCars.ItemsSource = _carList;  
        }  
    }  

    运行程序,效果如下图:

    3. 控件的外衣ControlTemplate

        每每提到ControlTemplate我都会想到“披着羊皮的狼”这句话-----披上羊皮之后,虽然看上去像只羊,但其行为仍然是匹狼。狼的行为指的是它能吃别的动物、对着满月嚎叫等事情,控件也有自己的行为,比如显示数据、执行方法、激发事件等。控件的行为要靠编程逻辑来实现,所以也可以把控件的行为称为控件的算法内容。举个例子,WPF中的CheckBox与其基类ToggleButton的功能几乎完全一样,但外观差别上却非常的大,这就是更换ControlTemplate的结果。经过更换ControlTemplate,我们不但可以制作披着CheckBox外衣的ToggleButton,还能制作披着温度计外衣的ProgressBar控件。
    注意:
    实际项目中,ControlTemplate主要有两大用武之地:
    通过更换ControlTemplate来更换控件的外观,使之具有更优的用户体验和外观。
    借助ControlTemplate,程序员和设计师可以并行工作,程序员可以使用WPF标准控件进行编程,等设计师的工作完成之后,只需要把新的ControlTemplate应用的程序中即可。

        ItemsControl具有一个名为ItemsPanel的属性,它的数据类型是ItemsPanelTemplate。ItemsPanelTemplate也是一种控件Template,它的作用是可以让程序员可以控制ItemsControl的条目容器。

    举例而言,在我们的印象中ListBox中的条目都是至上而下排列的,如果客户要求我们做一个水平排列的ListBox怎么办呢?WPF之前,我们只能重写控件比较底层的方法和属性,而现在我们只需要调整ListBox的ItemsPanel属性。

    <Window x:Class="WpfApplication11.wnd1132"  
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"  
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  
            Title="wnd1132" Height="80" Width="300">  
        <Grid>  
            <ListBox>  
                <!--条目容器-->  
                <ListBox.ItemsPanel>  
                    <ItemsPanelTemplate>  
                        <StackPanel Orientation="Horizontal"></StackPanel>  
                    </ItemsPanelTemplate>  
                </ListBox.ItemsPanel>  
                <!--条目元素-->  
                <TextBlock Text="Allan"></TextBlock>  
                <TextBlock Text="Allan2"></TextBlock>  
                <TextBlock Text="Allan3"></TextBlock>  
                <TextBlock Text="Allan4"></TextBlock>  
            </ListBox>  
        </Grid>  
    </Window>  

    条目就会包装在一个水平排列的StackPanel中,从而横向排列,如下图所示:

     

    转自http://www.cnblogs.com/lizhenlin/p/5906729.html

    转载于:https://www.cnblogs.com/KQNLL/p/9192117.html

    展开全文
  • WPF迅雷界面

    2019-08-15 14:01:23
    本文中的控件使用了开源的DMSkin,DMSkin是一个基于WPF的.Net WPF开源界面库,实现了无边框的WPF开发方案,内置部分控件模板.
  • 注意:本文主要是介绍建立WPF程序的模板,其他类型的模板并不确定以此方式创建有么有没问题 1.首先确保你的Visual Studio 已安装Visual Studio SDK 这个组件,如果安装的时候,没有勾选掉,默认都有。 2.然后新建...

    注意:本文主要是介绍建立WPF程序的模板,其他类型的模板并不确定以此方式创建有么有没问题

    1.首先确保你的Visual Studio 已安装Visual Studio SDK 这个组件,如果安装的时候,没有勾选掉,默认都有。

    2.然后新建解决方案,再新建项目,会看到如图的界面

    新建完成后的项目结构如下图

    但是,我并不打算介绍以此方式创建,如果有兴趣可以看看微软文档

    3.下面正是介绍我用的方式,既然我要建WPF程序的模板,何不再已有的模板上改,所以我们就新建一个WPF项目模板,常规操作无需多说如图

    下图中的项目结构我是已经编辑过的了,变成我想要的模板结构了

    我的修改主要是增加了一些本地的dll引用,因为默认模板并没有我这些引用,删除掉了我不想用的MainWindow.xaml文件

    然后就是关键一步,在工具栏找到项目-->导出模板,点击


    会弹出向导界面如图,我们是建项目模板,所以就选项目模板了

    下面这个界面就是模板的一些基础设置,名称 说明 图标等,按自己的要求去改,

    然后点击完成,重启VS,再新建项目就可以看到你的模板了,然后就尽情使用吧!!!

     

    转载于:https://my.oschina.net/u/2525682/blog/3067235

    展开全文
  • 通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件的衍伸产品,还是以数据为中心的商业智能产品,都能...
  • 应用程序使用统计信息 - .NET CORE(C#) WPF界面设计 首发文章地址:https://dotnet9.com/10546.html 关键功能点 抽屉式菜单 圆形进度条 Demo演示: 1. 新建项目 使用 VS 2019 的 .NET Core 3.1 WPF 项目模板,...
  • 树节点里datagrid始终不显示数据,但是树节点的绑定却是没有问题的,界面效果如下![图片说明](https://img-ask.csdn.net/upload/201712/20/1513735825_4879.jpg) 数据源后台添加的数据如下 ``` List...
  • WPF登录界面

    2021-04-21 09:26:10
    WPF登录界面 1.前端代码 <!--窗口资源--> <Window.Resources> <!--定义按钮样式--> <Style TargetType="Button"> <Setter Property="Foreground" Value="Black"/> <!--修改...
  • 认识WPF模板

    2016-12-01 11:30:58
    1.1WPF菜鸟看模板  前面的记录有提过,控件主要是算法和数据的载体。控件的算法主要体现在可以激发的事件、可以调用的方法、能进行的操作等方面;控件的数据体现为:控件能展示哪些数据。上面两方面终决定了控件...
  • 我在前端界面如下调用: ``` xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="系统管理" Height="650" Width="1025...
  • WPF界面设计技巧(5)—自定义列表项呈现内容 原文:WPF界面设计技巧(5)—自定义列表项呈现内容 接续上次的程序,稍微改动一下原有样式,并添加一个数据模板,我们就可以达成下面这样的显示...
  • WPF仿360界面

    2015-01-24 10:00:53
    WPF仿360安全卫士界面 主要展示WPF中的模板及样式,适合初学者
  • (3)辅助开发支持:Demo、模板、VsPackage制作。 框架源码如下所示。 本文介绍第(1)部分。 &amp;nbsp; 1 安装 现在我们就先来见识一下这个界面框架。首先,你可以通过以下链接来下载到这个框架的VS...
  • WPF日期控件模板重写

    2020-03-19 17:11:02
    该项目重写了WPF中的日期控件,选择当前日期,过去日期,可选日期,整体界面重新重写。另一个项目带有滚动时间,按像素点滚动。
  • WPF中的模板

    千次阅读 2013-12-09 10:11:15
    Binding和基于Binding的数据驱动界面WPF的核心部分,WPF最精彩的部分是模板(Template)。 WPF系统与程序内容(业务逻辑)的边界是Binding,Binding把数据源源不断地从程序内部送出来,交由界面元素来显示,又把从...
  • WPF核心是模板

    2011-12-09 15:40:00
    WPF界面完全解散了。这样的模式多好啊。你需要一个控件,OK。人家基础控件全部给你了,还有难度?细细算来也是,我一开始做WPF应用程序的时候,就为一个分页控件,找遍了国内外网站,都很不如意。最后一咬牙一跺脚...
  • WPF模板的学习

    2013-08-26 17:48:49
    这就是模板模板适用于这样一种场合:控件在功能上满足程序的要求,但界面上不能(或不方便)满足程序的要求,比如说:我们更改一个控件的外观,都是基于其已有的属性——要更改其背景色,设置Background属性;...
  • WPF模板(一)详细介绍 原文:WPF模板(一)详细介绍 本次随笔来源于电子书,人家的讲解很好,我就不画蛇添足了。 图形用户界面应用程序较之控制台界面应用程序最大的好处就是界面友好、数据显示直观...
  • public T FindFirstVisualChild<T>(DependencyObject obj, string childName) where T : DependencyObject { for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++) ...
  • WPF模板触发器Demo

    2019-01-31 16:21:46
    1、界面设计如图: 2、xaml代码如下: &lt;Window x:Class="WpfAppDemo.TemplateDemo"  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"  xmlns:x="...
  • A beautiful wpf ui library using templates & attached properties. Panuon.UI的优化版本。一个漂亮的、使用样式与附加属性的WPF UI控件库。 Email : QQ Group : 718778191 Zhihu : @末城via GitHub地址: 码云...
  • WPF 登录界面与逻辑练习 这是一个按照视频学习的部分练习代码,使用MVVM架构实现 一、程序文件架构: 二、界面效果: 三、登录界面LoginView.xaml 其中用户名,密码的控件用到了模板的样式修改(编辑模板->编辑...

空空如也

空空如也

1 2 3 4 5 ... 18
收藏数 351
精华内容 140
关键字:

wpf界面模板