第一个WPF应用程序

WPF 全称为 Windows Presentation Foundation。

核心特性:

  1. WPF使用一种新的XAML(Extensible Application Markup Language)语言来开发界面,这将把界面开发以及后台逻辑很好的分开,降低了耦合度,使用户界面设计师与程序开发者能更好的合作,降低维护和更新的成本。这也使得应用不仅仅局限于winforme ,更可以移植到网页(HTML5)上,使得网页拥有客户端的效果。

  2.全新的数据banding,使得开发起来更加容易

  3.界面与代码完全分开,便于维护

  4.界面效果更加炫,用户体验效果更加棒

前景:

  1.随着win8的出现,微软开始边缘化WPF/SilverLight而热捧HTML5。

   2.但是WPF还是Windows上方便快捷地进行桌面应用开发的不错选择。同时Win8风格的应用也支持XAML。

XAML语言简介:

  1.编写WPF程序跟编写ASP.NET程序一样,不过首先要使用XAML定义程序界面,然后再用.NET(VB,C#)语言编写相应的逻辑代码,两者会协同工作, 而ASP.NET的前端需要使用HTML展示。

  2.简而言之,WPF:

  3.程序界面:XAML语言定制

  4.程序逻辑:C#语言实现

  5.XAML其实也不是什么新语言,只不过是一种新的基于XML的描述性语言。其工作性质类似于ASP.NET中的HTML,即对所有界面元素进行定制,从而构成具有WPF风格的界面。即用来描述程序UI的描述性语言。

  6.虽然可以按照传统方式使用程序代码来实现界面,但是使用XAML来设计,界面设计和逻辑设计就可以完全分离,这就使得在项目开发中业务逻辑的设计与界面的设计可以分开,分别有专业的人员来实现,从而使各类人员在项目中各尽其能各展其长。

总而言之,就是为了界面与逻辑分离

参考C#代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace Practice
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// 2016年4月11日 BY 伊甸一点
    /// </summary>

    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void ListView_Loaded(object sender, RoutedEventArgs e)//listview 加载时对gridview实现动态完成
        {
            GridView gridview = new GridView();
            gridview.Columns.Add(new GridViewColumn { Header = "ID", DisplayMemberBinding = new Binding("Id") });
            gridview.Columns.Add(new GridViewColumn { Header = "NAME", DisplayMemberBinding = new Binding("Name") });
            gridview.Columns.Add(new GridViewColumn { Header = "CATEGORY", DisplayMemberBinding = new Binding("Category") });
            listView1.View = gridview;
        }
        private void Button_Click(object sender, RoutedEventArgs e)//完成添加功能
        {
            string text1 = textBox1.Text;
            string text2 = textBox2.Text;
            string text3 = comoboBox1.Text.ToString();
            Boolean flag = false;//进行标记,flag == false 说明ID都不重复, flag == true 说明ID有重复
            if (text1 == "" || text2 == "" || text3 == "")
                MessageBox.Show("Incomplete information", "Tips");//提示信息不完整
            else
            {
                foreach (Book item in listView1.Items)//进行循环判断 item.id( Book的实例 )是否与listView1.Items的某个text1相等
                {
                    if (text1 == item.Id)
                    {
                        MessageBox.Show("Already have same ID number", "Tips");//提醒已经有相同ID存在
                        flag = true;//修改flag
                    }
                }
            }
            if (!flag)//相当于 if( flag == false )
                listView1.Items.Add(new Book(text1, text2, text3));
        }

        private void Button_Click_1(object sender, RoutedEventArgs e)//完成删除功能
        {
            if (listView1.SelectedItem == null)//判断是否选择中ListView中的某行
                MessageBox.Show("Nothing have been choosed ", "Tips");
            else
                listView1.Items.Remove(listView1.SelectedItem);//删除选中的行
        }

    }
    class Book
    {
        public Book(string ID, string NAME, string CATEGORY)//构造函数
        {
            Id = ID;
            Name = NAME;
            Category = CATEGORY;
        }
        private string id;//封装的要求
       //可以通过{ 右键--->重构--->封装字段 }实现自动完成get set函数
        //下面相同
        public string Id//再次使用id 时只需要调用Id即可
        {
            get { return id; }
            set { id = value; }
        }
        private string name;

        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        private string category;

        public string Category
        {
            get { return category; }
            set { category = value; }
        }
    }
}

参考XAML代码:

<Window x:Class="Practice.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid Margin="0,0,2,0">
        <TextBox x:Name="textBox1" HorizontalAlignment="Left" Height="23" Margin="40,240,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/>
        <TextBox x:Name="textBox2" HorizontalAlignment="Left" Height="23" Margin="192,240,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/>
        <TextBox HorizontalAlignment="Left" Height="0" Margin="119,276,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="4"/>
        <ComboBox x:Name="comoboBox1" HorizontalAlignment="Left" Margin="352,240,0,0" VerticalAlignment="Top" Width="120">
            <ComboBoxItem Content="文化" Height="23" Width="100"/>
            <ComboBoxItem Content="科技" Height="23" Width="100"/>
            <ComboBoxItem Content="软件" Height="23" Width="100"/>
        </ComboBox>
        <Button Content="Add" HorizontalAlignment="Left" Margin="134,276,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click"/>
        <Button Content="Delete" HorizontalAlignment="Left" Margin="283,276,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click_1"/>
        <Grid Margin="40,10,43,139">
            <ListView x:Name="listView1" HorizontalAlignment="Left" Height="170" VerticalAlignment="Top" Width="432" Loaded="ListView_Loaded">
                <ListView.View>
                    <GridView/>
                </ListView.View>
            </ListView>
        </Grid>
        <Label Content="ID" HorizontalAlignment="Left" Margin="40,210,0,0" VerticalAlignment="Top"/>
        <Label Content="Name" HorizontalAlignment="Left" Margin="192,210,0,0" VerticalAlignment="Top"/>
        <Label Content="Category" HorizontalAlignment="Left" Margin="352,210,0,0" VerticalAlignment="Top"/>

    </Grid>
</Window>

对应的界面:

运行界面:

时间: 2024-08-26 09:46:19

第一个WPF应用程序的相关文章

通过一个WPF实例进一步理解委托和事件

在前写过"浅谈C#中的委托"和"浅谈C#中的事件"两篇博客,内容有些抽象,似乎难以说明委托和事件的关系. 今天通过一个小程序来进一步说明二者的使用及联系. 首先新建一个WPF应用程序,取名TestDelegateAndEvent. 在.xmal中加入四个按钮,并添加Window_Loaded事件. 代码如下: <Window x:Class="TestDelegateAndEvent.MainWindow" xmlns="http

WPF入门教程系列(一) 创建你的第一个WPF项目

WPF入门教程系列(一) 创建你的第一个WPF项目 WPF基础知识 快速学习绝不是从零学起的,良好的基础是快速入手的关键,下面先为大家摞列以下自己总结的学习WPF的几点基础知识: 1) C#基础语法知识(或者其他.NET支持的语言):这个是当然的了,虽然WPF是XAML配置的,但是总还是要写代码的,相信各位读者应该也都有这个基础了. 2) HTML语言:虽然WPF是窗体程序但是由于使用的XAML语言,如果以前接触过HTML.XHTML.ASP.NET之路的东西的话会,接受这些标签会很有帮助的,如

用vs2012创建第一个wpf应用

c/s结构windows桌面应用程序wpf教程-创建wpf应用开发环境:visual studio 2012 ,大家可以根据自己的情况使用更高的版本,因为我电脑上装了两个版的vs,不想再多装一个了,所以就用2012版本的了. 打开vs2012,新建项目,选择wpf应用程序 创建完成后,可以看到窗口中有三大部分组成,工程结构,窗口区域和窗口对应的代码区域 在解决方案中,第一个文件是app.config,是系统的配置文件,用来记录配置信息,比如数据库连接字符串等 app.xaml是系统启动主应用入口

搭建QQ聊天通信的程序:(1)基于 networkcomms.net 创建一个WPF聊天客户端服务器应用程序 (1)

搭建QQ聊天通信的程序:(1)基于 networkcomms.net 创建一个WPF聊天客户端服务器应用程序 原文地址(英文):http://www.networkcomms.net/creating-a-wpf-chat-client-server-application/ 注意:本教程是相当广泛的,如果你是在短请也看到我们的东西 开始和 如何在几分钟内创建一个客户端服务器应用程序教程. 注2:本例中包括,明显延长进一步证明功能,在包中包含的示例 包下载. 在我们开始之前确保您已经安装了Vis

最新用WPF为触摸屏写了一个手写程序,双格输入的

原文:最新用WPF为触摸屏写了一个手写程序,双格输入的 双格输入可以提高手写速度,当前字写完以后可以自动识别提交,写下一个字.这样比单格手写速度提高一倍.特别适合触摸屏程序使用 界面如下: 程序如下: 点击打开链接 ? 原文地址:https://www.cnblogs.com/lonelyxmas/p/9688762.html

【ASP.NET Web API教程】3.3 通过WPF应用程序调用Web API(C#)

参考页面: http://www.yuanjiaocheng.net/ASPNET-CORE/core-static-files.html http://www.yuanjiaocheng.net/ASPNET-CORE/setup-mvc.html http://www.yuanjiaocheng.net/ASPNET-CORE/mvc-design-pattern.html http://www.yuanjiaocheng.net/ASPNET-CORE/mvc-routing.html h

【C#】1.3 WPF应用程序学习要点

分类:C#.VS2015 创建日期:2016-06-14 使用教材:十二五国家级规划教材<C#程序设计及应用教程>(第3版) 一.要点概述 <C#程序设计及应用教程>(第3版)的第7~14章是WPF应用程序编程基础,这本教材中涉及的范围很广,作者的目的主要是为了让你从"广度"上对WPF涉及的各种编程技术有一个大致的印象,但是在"深度"上并没有太刻意去强化它,或者说并不是要求你必须全部都掌握(那是你以后参与实际项目时再逐步深入学习的事).这就像

【WPF学习】创建WPF应用程序的三种方式

说到WPF项目,肯定会想到XAML,这两者是相互补充的技术,其实它们也是相互独立的,所以可以创建不使用XAML的WPF项目,今天就讲一讲创建WPF应用程序的三种不同的编码方式. 1.只使用代码:这种方法类似于传统的Windows窗体应用程序,通过代码语句生成用户界面.这种方法在编写WPF项目时很不常见,但是也不完全是没有优点的,它的潜在优点是可以随意定制应用程序.例如想只用代码创建一个窗体,那么需要新建一个Class(注意不是新建一个Window),在Class的代码中继承Window,然后写一

查看WPF 应用程序XAML结构DOM树

当我们看到一些设计新颖的网站时,可以借助浏览器自带的Inspector 工具或插件方便的浏览网站布局结构及逻辑.如果是WPF 应用程序能否看到控件的架构方式呢?本篇将介绍两款工具Snoop 和WPF Inspector 可用来窥探WPF 应用程序内部结构. (一)Snoop接下来打开WPF应用程序,点击"刷新"按键即可看到Snoop 已经捕获到如下图示. 点击"Snoop"(望远镜)按键,进入Snoop 捕获界面.与IE8 中的Developer Tools 效果相