WPF 项目开发入门(一) 安装运行

WPF 项目开发入门(一) 安装运行
WPF 项目开发入门(二) WPF 页面布局
WPF 项目开发入门(三)WPF 窗体与页面
WPF 项目开发入门(四) MVVM 模式 与 TreeView树组件
WPF 项目开发入门(五)ListView列表组件 与 Expander组件
WPF 项目开发入门(六)DataGrid组件
WPF 项目开发入门(七) From表单组件
WPF 项目开发入门(八)数据库驱动配置与数据库操作
WPF 项目开发入门(九)数据库连接 NHibernate使用
WPF 项目开发入门(十)DevExpress 插件+NHibernate登录
WPF 项目开发入门(十一)DevExpress 插件 Grid表格应用
在制造行业和大型工厂中很多系统都是使用WPF软件开发,因为WPF软件可以很方便的和机械设备上的自动化项目进行数据通信,WPF和传感器的驱动兼容的非常好,在开发数据采集与远程监控等等功能的时候非常简单,同时开发简单上手快。由于工作的原因常常会使用到WPF开发一些工厂的桌面操作系统。本人决定把自己总结的WPF使用技巧,和一些开发中常常用到的知识点写出来。本人会在已后的创作中发表一系列和WPF相关的文章分享给大家。

1 visual studio 安装wpf

开发工具visual studio官网 https://visualstudio.microsoft.co m/zh-hans/downloads/ 下载社区版本,有企业账户也可以下载企业版。
在这里插入图片描述

下载完成后点击安装
在这里插入图片描述
选择安装

在这里插入图片描述
选择中文
在这里插入图片描述
设置安装地址
在这里插入图片描述
安装驱动与软件包

安装成功后进入到visual studio中,在工具菜单中打开获取工具与功能选项,加载其他需要的驱动包。
在这里插入图片描述
将和NET有关的软件和驱动包全部加载进入visual studio工具中来。
在这里插入图片描述

2 WPF Application 项目启动

在visual studio工具中新创建一个WPF工程项目,选择C#,XAML,桌面工程类型创建。选择完成后点击下一步。
在这里插入图片描述
设置项目名称与项目保存地址
在这里插入图片描述
创建完成后打开项目可以看到整体结构

在这里插入图片描述

每个项目工程中(应用程序域)中仅且只有一个 Application 实例存在。Application 默认由两部分组成

1 App.xaml

​ 启动配置文件描述。xml元素Application

2 App.xaml.cs

​ 项目启动类,必须继承Application类。

Application 功能

  • 跟踪应用程序的生存期并与之交互。
  • 检索和处理命令行参数。
  • 检测和响应未经处理的异常。
  • 共享应用程序范围的属性和资源。
  • 管理独立应用程序中的窗口。
  • 跟踪和管理导航。

App.xaml 描述

<Application x:Class="WpfApp1.App"    ----------------------------  运行的项目wpf窗体名称
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"   -----xml命名空间与规则
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:WpfApp1"
             StartupUri="MainWindow.xaml">     -----项目的启动窗体名称
    <Application.Resources>     
    </Application.Resources>
</Application>

如果需要更改启动窗体,在StartupUri=属性重新设置对应的启动窗体内容。

App.xaml.cs

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Threading.Tasks;
using System.Windows;
namespace WpfApp1
{
    /// <summary>
    /// App.xaml 的交互逻辑
    /// </summary>
    public partial class App : Application {
    }
}

启动类main函数,项目自动生成

namespace WpfApp1 { 
public partial class App : System.Windows.Application {
        /// <summary>
        /// InitializeComponent
        /// </summary>
        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
        [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
        public void InitializeComponent() {
             //窗体模本内容
            #line 5 "..\..\App.xaml"
            this.StartupUri = new System.Uri("MainWindow.xaml", System.UriKind.Relative);
            #line default
            #line hidden
        }
        /// <summary>
        /// Application Entry Point.
        /// </summary>
        [System.STAThreadAttribute()]
        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
        [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
        public static void Main() {
            //默认启动窗体内容
            WpfApp1.App app = new WpfApp1.App();
            app.InitializeComponent();
            app.Run();
        }
    }
}
}

3 WPF 初始化第一个窗体

WPF项目中定义自己的第一个窗体,用户是通过窗体与应用程序进行交互和数据通信的。在WPF中所有的窗体都是继承System.Windows.Window类,窗口的主要作用是页面UI设计类似WEB开发中的HTML页面。在开发窗体的过程中代码分为两步分用户UI(xaml)与业务代码(cs)部分。

1 创建一个窗体

窗体名称MainWindow.xaml

<Window x:Class="WpfApp1.MainWindow"      ----------------窗体名称(所在项目)
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp1"
        Title="MainWindow" Height="450" Width="800">----------------窗体属性设置
    <Grid>  ----------------窗体UI内容设置
        <StackPanel>
            <Label x:Name="lblHello">欢迎你光临韬哥WPF代码世界!</Label>
            <Button Name="btnThd" Click="btnThd_Click" >大家快来点我啊</Button>  ------------btnThd_Click事件 在CS代码定义事件内容
            <Button Name="btnAppBeginInvoke" Click="btnThd_Click" >大家快来点我啊</Button>
        </StackPanel>
    </Grid>
</Window>

2 创建窗体业务代码MainWindow.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
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;
using System.Diagnostics;
namespace WpfApp1
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window //继承WPF Window窗体类型
    {
        public MainWindow()
        {
            InitializeComponent();
        }
        //定义事件内容 页面UI中的点击事件
        private void btnThd_Click(object sender, RoutedEventArgs e)
        {
            MessageBox.Show("2222222222222");
            Trace.WriteLine("欢迎大家来点我哈哈");
        }
    }
}

弹出框功能:MessageBox.Show(“2222222222222”);

定义后台打印函数 Trace.WriteLine(“”),在后台打印函数方便功能代码调试。引入包:using System.Diagnostics;

3 运行程序点击页面中的按钮,在程序后台可以看大打印出来的数据内容。

XAML 介绍

可以说是用WPF创建应用程序必不可少的最基本的知识就是XAML 。理解它是 HTML的标记符号,用户定义WPF程序页面

xmlns 标记

“xmlns:mc=”为例,“mc”为前缀。,前缀名称 = 的右侧指定命名空间。前缀名称(类似于使用别名)可以为前缀指定任何名称。
在XAML主体中使用xmlns中指定的前缀时,使用“mc:Ignorable”=“ prefix:class name(property) ”的格式。

xmls备注
winfx/2006/xaml/presentation引用 System.Windows 命名空间中包含的类的默认命名空间,包括 PresentationCore.dll。由于这个命名空间是默认设置的,所以 Windows、Grid 等可以不用前缀来描述。
x: ~ winfx/2006/xaml代表了 XAML 的语言特性
d: ~ expression/blend/2008定义了仅在Visual Studio 的 WPF 设计视图和可视化设计器**(如 Blend)**中有效的属性。 我经常用到d:DesignHeight、d:DesignWidth、d:DataContext等等,所以我想你应该记住它们
mc: ~ openxmlformats.org/markup-compatibility/2006如果您从模板生成它,它将被自动包含在内,因此您可能不会自己编写它,但它的是Ignorable 属性。通过指定 mc:Ignorable = ”d”,“d:prefix”指向的设计时设置在运行时失效
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006">

XAML = “CLR 对象的实例化”

XAML 摸板中的元素 ,都是(CLR 对象)标记语言创建一个对象C#实例,因此使用XAML进行页面元素的描述来构建PWF页面内容。

定义一个CLR 类

using System.IO;
using System.Windows.Markup;
namespace Sample{
  public class Point{
    public int X { get; set; }
    public int Y { get; set; }
  }
}
class Program{
  static void Main(string[] args){
    var x = new Sample.Point { X = 1, Y = 2 };
    using (var stream = File.Open("test.xaml", FileMode.Create))
      XamlWriter.Save(x, stream);
  }
}

xaml引入这个CLR描述

<Point X="1" Y="2"
  xmlns="clr-namespace:Sample;assembly=SampleLibrary" />

相反,要从 XAML 代码反序列化为 CLR 对象,请使用 XamlReader.Load 方法

**XAML中元素对应CLR **

创建用户定义类“Point”( XAML 代码中的 元素)的实例(= CLR 对象)的示例。

<Point X="1" Y="2"
  xmlns="clr-namespace:Sample;assembly=SampleLibrary" />
↑ 项目自定义的C#类 Sample.Point 与XAML标记关系 X,y 传递参数
var obj = new Sample.Point{
  X = 1,
  Y = 2
}
  • XML 命名空间(xmlns 属性)= CLR 命名空间 + 程序集信息
  • XML 元素名称 = CLR 类名称
  • XML 属性 = CLR 对象属性值设置(属性语法)

System.Uri 类的实例化示例

Uri 类(系统命名空间)(来自 XAML 代码中的 元素)的实例(= CLR 对象)的示例。

< Uri xmlns = "clr-namespace: System ; assembly = System">
  http://www.atmarkit.co.jp/ </Uri>
var converter = new System.UriTypeConverter();
var obj = converter.ConvertFrom("http://www.atmarkit.co.jp/");
// ↑System.Uri类(=<Uri>元素)包含
// [TypeConverter(typeof(UriTypeConverter))]带属性

XAML 代码中每个元素的字符串根据分配到的CLR 类中的 TypeConverter 属性值进行传递参数。

例如,根据给定的TypeConverter属性的“UriTypeConverter”,将XAML代码中元素的字符串转换为C#代码中Uri类的一个实例(=CLR对象)到 Uri 类.

  • 11
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zht_bs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值