游戏技术文章

WPF 杂谈——入门介绍

时间:2017-4-24 13:35:05  作者:棋牌资源网  来源:棋牌资源网  查看:8958  评论:0
内容摘要:对于WPF的技术笔者是又爱又恨。现在WPF的市场并不是很锦气。如果以WPF来吃饭的话,只怕会饿死在街头。同时现在向面WEB开发更是如火冲天。所以如果是新生的话,最好不要以WPF为主。做为选择性来学习一下还是可以的。WPF项目在VS开发工具里面对于WPF应用相关的项目类型有三种。本...
对于WPF的技术笔者是又爱又恨。现在WPF的市场并不是很锦气。如果以WPF来吃饭的话,只怕会饿死在街头。同时现在向面WEB开发更是如火冲天。所以如果是新生的话,最好不要以WPF为主。做为选择性来学习一下还是可以的。

WPF项目

在VS开发工具里面对于WPF应用相关的项目类型有三种。本来在笔者看来他可能会单独存在一个地方,后来想想也对,WPF也算是Window开发吧。那么WPF的三种项目类型都在模板Window节点下也是正常的。如下

WPF_杂谈——入门介绍

对于"WPF 应用程序"项目相信大家都知道——执行项目。唯一笔者不明白的事为什么会有俩个控件库项目。明文上我们可以看到一个是用户,一个是自定义。那么俩者之间有什么不同的地方吗?笔者是这样子理解的:用法上来讲用户控件主要用于业务上的重用。这跟Winform用户控件有一点类似。很多控件都是当前存在的。土气讲就是把原本就有的控件拉到同一个框中组成了新的控件。而自定义控件则是在原来控件上在进一步的继承扩展。相当于说是一个全新的控件。功能上来讲不管理用户还是自定义俩者都可以实现对方的功能。但是在笔者看来自定义会来的深一些。自定义控件会去重新设定Style和Template。(为了更好的理解可以去 这里) 所以在新建项目之后会存在一定的差别。如下

用户控件项目

WPF_杂谈——入门介绍

自定义控件项目

WPF_杂谈——入门介绍

不管是WinForm开发还是WPF开发。我们都能看到Application类的影子。这种作法笔者真的不是很喜欢。很容易把俩者放在一起。新建一个WPF应用项目之后,会生成俩个Xaml文件。如下

WPF_杂谈——入门介绍

App.xaml就是一个继承Application类的子类。对应的WPF运行都要通他来完成了。但是往往很有多人不是很喜欢WPF默认的这种方式。总是想要变成WinForm类似的方式启动。可能还是忘不了WinForm吧。至少笔者也有一点。如何去实现呢?

即然都是Window应用开发的话,笔者想一定离不开Main函数吧。可是笔者点开了相关的源码文件,硬是没有找到相应的Main函数。后来通过下面的方式找到了。原来在App.g.i.cs文件里面。也因此了解了。App.Xaml是有属性类型的。

WPF_杂谈——入门介绍

所谓的属性类型是指App.xaml的属性中的“生成操作”部分。我们可以发现他默认是ApplicationDefinition。只要是ApplicationDefinition的话,他就是会默认生成Main函数。如下。

WPF_杂谈——入门介绍

明白了上面的机制之后就简单多了。把App.xaml的属性设置成Page,同时创建一个叫Program类。代码如下。

复制代码
 public class Program
    {
        [System.STAThreadAttribute()]
        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
        [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
        public static void Main()
        {
            WpfApplication2.App app = new WpfApplication2.App();
            app.InitializeComponent();
            app.Run();
        }
    }
复制代码

从上面的讲述中,我们可以知道一点:App.xaml好像是有种类的。如果是一个ApplicationDefinition的话,就可以启动项目直接调用。即是你把Main函数删除掉他也可以自动帮你生成。如果是Page的话,那就SORRY了。你必须自己手动增加Main函数。这对于一个.NET开发人员来讲并不难。正如笔者所讲的就跟Winfrom入口函数一个样子。

WPF界面

WPF在外观的编程做法是让笔者最满意的地方。他不在像传统WinForm那样子死板。而引入类似于B/S模式的方式。相信大家都听过CSS样式。没有错。很像。什么意思呢?WinForm的界面编辑可以说决对是一个很死板的方式。WPF界面引用了XAML来编辑。也许也正因为这样子才让界面更加的独立起来。同时让我们在美化界面更加的灵动和方便 。因为他也有一个跟HTML网页一样子的概念——样式(Style)。如下(引用于开源项目(Modern UI for WPF))

复制代码
 1     <Style x:Key="SystemButton" TargetType="ButtonBase" BasedOn="{StaticResource SystemButtonBase}">
 2         <Setter Property="Width" Value="32" />
 3         <Setter Property="Height" Value="24" />
 4         <Setter Property="Foreground" Value="{DynamicResource ButtonText}"/>
 5         <Style.Triggers>
 6             <Trigger Property="IsMouseOver" Value="True">
 7                 <Setter Property="Background" Value="{DynamicResource ButtonBackgroundHover}" />
 8                 <Setter Property="Foreground" Value="{DynamicResource ButtonTextHover}"/>
 9             </Trigger>
10             <Trigger Property="IsPressed" Value="True">
11                 <Setter Property="Background" Value="{DynamicResource ButtonBackgroundPressed}" />
12                 <Setter Property="Foreground" Value="{DynamicResource ButtonTextPressed}" />
13             </Trigger>
14             <Trigger Property="IsEnabled" Value="false">
15                 <Setter Property="Foreground" Value="{DynamicResource ButtonTextDisabled}" />
16             </Trigger>
17         </Style.Triggers>
18     </Style>
复制代码

上面只是定一个叫SystemButton的样式。主要用于修饰按扭的。他跟CSS样式的类样式有点类似。使用的话更不用说了。如下红色的SystemButton。

 <Button x:Name="Maximize" Command="{Binding Source={x:Static SystemCommands.MaximizeWindowCommand}}" ToolTip="{x:Static modernui:Resources.Maximize}" Style="{StaticResource SystemButton}" >

我们都知道HTML网页如果想要引用CSS样式文件的话,就必须在头部声明引用。这样子才可以知道当前的界面是引用了哪一个CSS样式文件。不可否认WPF的界面同样子类似的。只是引用的文件不在叫CSS样式文件,而是叫资源文件。这个后续会笔者会在讲到。不过B/S和C/S本质上还是有一定的差别的。至少他可以声明一个作用于整个应用程序的资源文件。如下

复制代码
<Application x:Class="FirstFloor.ModernUI.App.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="/FirstFloor.ModernUI;component/Assets/ModernUI.xaml" />
                <ResourceDictionary Source="/FirstFloor.ModernUI;component/Assets/ModernUI.Light.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application
复制代码

启动WPF应用程序就必须通过Application类或子类。执行Application类他会去寻找窗体。上面源码中StartupUri="MaiWindow.xaml"就体现出来了。当然不可能就必须这样子做。你们可以用代码来做。

在WinForm的时候,一个应用软件是有若干个Form组起的。而WPF界面则不一定哦。你可以是有一个Window和若干个UserControl或是若干个Page。至于你们选择哪一种方式来做的话,只要项目适合的话都可以。如果实在不清楚的话,你可以跟根据开源项目Modern UI for WPF来做。他就是一个Window和多个UserControl组成的。(Window相当于Form)

笔者开始入门的时候,并没有直接去查看开源项目。而是先把VS新建生成的了解了一遍。至少你要知道在什么地方启动。以什么样子的方式启动。界面又是什么入手的。明白了VS的源生状。就是可以开始启动开源项目的学习了。

标签:WPF杂谈入门介绍 

欢迎加入VIP,【VIP售价:只要288元永久VIP会员】畅享商业棋牌游戏程序下载,点击开通!

下载说明


☉本站所有源码和资源均由站长亲自测试-绝对保证都可以架设,运营!
☉如源码和资源有损坏或所有链接均不能下载,请告知管理员,

☉本站软件和源码大部分为站长独资,资源购买和收集,放心下载!

☉唯一站长QQ:1004003180  [人格担保-本站注重诚信!]

☉购买建议E-mail:1004003180@qq.com   源码收购 E-mail:1004003180@qq.com    

☉本站文件解压密码  【文章内都自带解压密码,每个密码不同!】


本站提供的所有源码,均来源站长提供,仅学习交流 浙ICP备09009969号

由此产生不良后果和法律责任与本站无关,如果侵犯了您的版权,请来信告知 1004003180@qq.com 将及时更正和删除! 

Copyright © 2008-2024 棋牌资源网,你身边的棋牌资源下载站    All Rights Reserved