语言学习
seanbei
这个作者很懒,什么都没留下…
展开
-
WPF教程(三十六)UpdateSourceTrigger属性
在前面的文章我们看到,TextBox中的变化并不是立即传递到源,而是在TextBox失去焦点后,源才更新。这种表现由绑定中的UpdateSourceTrigger属性来控制。它的默认值是Default,源会根据你绑定的属性来更新。写这篇文章的时候,除了Text属性之外的所有属性,源会随属性的改变而立即更新。Text属性不一样,它只有在目标元素失焦后才更新。UpdateSourceTrigger翻译 2017-01-09 22:12:39 · 12948 阅读 · 0 评论 -
WPF教程(九)窗体
在创建WPF应用的时候,你第一个看到的就是窗体类。它作为窗体的基础,提供标准的边框、工具条、最大化、最小化和关闭按钮。WPF窗体是XAML文件和后台代码文件的混合体。在VS(Express)里面创建一个WPF应用,将会生成一个默认窗体,显示如下代码:<Window x:Class="WpfApplication1.Window1" xmlns="http://schemas.mic翻译 2016-10-07 20:33:13 · 6145 阅读 · 1 评论 -
WPF教程(三十)Grid单元格
目前为止,我们只使用了带*号的宽和高,它指定了一行或者一列应该占据整个空间的比例。其实还有其他方法指定列宽和行高:绝对像素和自动宽高。下面的例子混合了这三种方法:<Window x:Class="WpfTutorialSamples.Panels.GridUnits" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/pre翻译 2016-10-29 11:50:01 · 4252 阅读 · 2 评论 -
WPF教程(二十九)Grid行和列
上一章我们介绍了重要的Grid面板,还展示了一些如何使用它的例子。这一章我们来做一些更深入的研究,这正是Grid真正闪光的地方。首先,加入更多的行和列,实现一个真正的表格布局。<Window x:Class="WpfTutorialSamples.Panels.TabularGrid" xmlns="http://schemas.microsoft.com/winfx/2006/x翻译 2016-10-29 11:07:03 · 14019 阅读 · 1 评论 -
WPF教程(二十八)Grid
Grid面板也许是最复杂的面板类型了。Grip可以包含多行多列。你可以定义每一行的高度和每一列的宽度,通过一个像素值、可用空间的百分比或者自动分配这三种方式。自动分配会根据内容自动调整行高和列宽。Grip一般用于其他面板无法实现的情形,譬如如你需要很多列而且需要联合其他面板。在Grid中的所有控件都会被最大化,同时一个叠一个放置。这是Grid最基本的形式。<Window x:Class="翻译 2016-10-27 21:20:52 · 2410 阅读 · 0 评论 -
WPF教程(二十七)DockPanel
DockPanel很容易就能把内容停靠到上下左右四个方向上。这个在某些场景显得非常重要,譬如你想把窗口划分成指定区域,除非禁用这个特性,否则,DockPanel中最后一个元素将自动填充剩余的空间。就像WPF其他面板控件一样,我们通过使用附加属性来看看这个面板的优势。在例子中用了DockPanel.Dock属性,它决定了子控件将停靠的方向。如果不指定这个属性,第一个控件就会被停靠到左边,最后一个翻译 2016-10-27 20:56:38 · 13125 阅读 · 1 评论 -
WPF教程(十七)TextBox
文本框是WPF最基础的文本输入控件,允许终端用户编写文本,可以是一行文字,也可以是多行。单行文本框文本框是如此的简单,你都不需要设置任何属性,就可以拥有一个完整的可编辑区。<Window x:Class="WpfTutorialSamples.Basic_controls.TextBoxSample" xmlns="http://schemas.microsoft.co翻译 2016-10-17 22:16:02 · 20866 阅读 · 0 评论 -
WPF教程(十六)标签控件
标签控件其实和文本框长得很像。但是,标签除了文本属性,还有一个内容属性。就因为这一点,标签除了容纳文本之外,可以容纳各种控件。标签的内容可以是字符串,如下:<Window x:Class="WpfTutorialSamples.Basic_controls.LabelControlSample" xmlns="http://schemas.microsoft.com/winfx翻译 2016-10-16 23:11:06 · 7051 阅读 · 0 评论 -
WPF教程(十五)文本框——内联格式
上章我们学习了文本框最核心的功能:显示字符串,在必要的时候换行。我们还用了其他颜色来凸显文字,如果你想做的远远不止这些,怎么办?幸好文本框支持内联的内容。这些像控件一样的结构全部继承于内联类,这意外着它们可以作为文本的一部分来传递。支持的元素包括AnchoredBlock, Bold, Hyperlink, InlineUIContainer, Italic, LineBreak, Run,翻译 2016-10-15 21:20:08 · 5075 阅读 · 0 评论 -
WPF教程(十)使用App.xaml
App.xaml是应用的声明起始点。在VS新建一个WPF应用,就能自动生成一个App.xaml,同时包含了后台代码文件App.xaml.cs。这两个文件都是局部类,和Window类非常相似,让你能够使用标记语言和后台代码。App.xaml.cs扩展了应用类,它是WPF窗口应用的中心类。.NET首先进入这个类的起始指令,从这里启动预想的窗口或者网页。同时这里订阅了重要的应用事件,如应用启动、未处翻译 2016-10-07 21:37:09 · 24776 阅读 · 3 评论 -
WPF教程(十一)WPF中的命令行参数
命令行参数这样是一种技术,传递一组参数到你希望开始的应用,以某种方式影响它。最普遍的例子就是使用一个具体的文件(如一个编辑器)打开应用。尝试使用Windows自带的记事本,在开始菜单选择运行或者按一下Win+R键,输入:notepad.exe c:\Windows\win.ini。这就在记事本中打开了win.ini文件(记得路径要正确哦)。记事本简单的寻找一条或多条参数,然后使用它们。你的应用也是翻译 2016-10-07 22:21:12 · 6918 阅读 · 0 评论 -
WPF教程(十九)单选框
单选框用于给用户提供一个选项表,但是只能选择其中的一项。用复选框也可以实现这样的功能,但是单选框更好的展示了他们能做的选择。<Window x:Class="WpfTutorialSamples.Basic_controls.RadioButtonSample" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presenta翻译 2016-10-19 22:33:58 · 14783 阅读 · 0 评论 -
WPF教程(十八)复选框
复选框用于勾选或者勾掉某一个选项,在后台代码中表现为一个布尔型值。还是直接来看代码吧,更形象:<Window x:Class="WpfTutorialSamples.Basic_controls.CheckBoxSample" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xm翻译 2016-10-18 20:04:23 · 25503 阅读 · 1 评论 -
WPF教程(三十四)Hello, bound world!
就像我们在最开始的"Hello,world!"例子中一样,我们通过一个"Hello,bound world!"例子来展示使用数据绑定是多么简单。现在就让我们跳进这个例子来看看:<Window x:Class="WpfTutorialSamples.DataBinding.HelloBoundWorldSample" xmlns="http://schemas.microsoft翻译 2016-11-14 23:46:28 · 2865 阅读 · 0 评论 -
WPF教程(三十五)使用DataContext
DataContext属性是绑定的默认源,除非你具体指定了另外一个源,就像上一章里面我们使用了ElementName属性。它由FrameworkElement类定义,大部分UI控件包括WPF窗口都继承于此类。简单地说,它允许你指定一个绑定的基。DateContext并没有默认源(刚开始的时候是NULL),但是它贯穿整个空间层次结构,你可以为窗口设置一个DataContext,然后在任意的子控件翻译 2016-11-17 22:56:57 · 33054 阅读 · 0 评论 -
WPF教程(三十二)GridSplitter分割线
在前面的章节你已经学到,使用Grid面板可以很容易的将可用空间划分成单个单元格。使用行和列的定义,又很容易控制每行或每列占据多少空间。但是,如果你想让用户来改变这些该怎么办呢?这个时候GridSplitter就出场了。GridSplitter使用起来非常简单,把它加到Grid里的某一行或者某一列,再分配合适的空间如5个像素这样就可以了。它允许用户从左边到右边,从上到下进行拖拽,这样就改变了行或翻译 2016-11-01 23:16:15 · 40284 阅读 · 2 评论 -
WPF教程(三十一)Grid网格跨越
Grid默认每一个控件占据一个单元格,但是有些情况下你需要某个控件占据多行或者多列。在这种情况下,可以使用ColumnSpan和RowSpan这两个附加属性来实现。这两个属性默认的值都是1,也就是一个单元格,你可以指定大于1的数字来让控件跨越多行或者多列。下面的例子使用了ColunmSpan属性:<Window x:Class="WpfTutorialSamples.Panels.Grid翻译 2016-10-31 22:43:58 · 20025 阅读 · 0 评论 -
WPF教程(二十二)文本呈现
在本章节,我们讨论为什么有时候在WPF中文本呈现得很模糊,之后是如何修复的,你自己又如何控制文本的呈现。前面的教程我们有提到,其他UI框架如WinForms通过使用Windows API来实现各种功能,相对于这些框架,WPF总是通过其自身实现。在文本显示这里两者表现的非常明显——WinForms使用系统提供的GDI API来显示,而WPF拥有自己的文本呈现方式,更好的支持动画或者设备。不幸翻译 2016-10-20 21:41:46 · 5054 阅读 · 1 评论 -
WPF教程(二十一)工具提示
工具提示有各种叫法,意思都是一样的:在鼠标停留在某一个控件或者某个链接上时,显示其对应的额外信息。WPF中通过使用FrameworkElement基类中的ToolTip属性来实现,几乎所有控件都继承于此类。为控件指定一个工具提示非常简单,如下:<Window x:Class="WpfTutorialSamples.Control_concepts.ToolTipsSimpleSample"翻译 2016-10-20 20:16:38 · 2895 阅读 · 0 评论 -
WPF教程(二十)密码框
WPF中编辑常规的文字都是使用文本框,但是如果是输入密码呢?功能应该是一样的,但是我们不想周边的人看着我们一个字母一个字母的输入,这样密码就被泄漏了,因此我们想用别的字符来替代真实密码的显示。出于这个目的,WPF有一个密码框控件,用起来和文本框一样。<Window x:Class="WpfTutorialSamples.Basic_controls.PasswordBoxSample"翻译 2016-10-19 22:51:45 · 23676 阅读 · 0 评论 -
WPF教程(十四)文本框
文本框本质上并不是一个控件,因为它不继承于控件类,然而在WPF中它使用情况和其他控件几乎一样,因此我们仍称它为控件。文本框控件是WPF中最基础的控件之一,非常实用。它将文字显示到屏幕上,和标签控件一样,但是比标签更简单,占资源更少。普遍的共识是标签用于简短的单行文本(包括图片),而文本框多用于多行文本。标签和文本框各有优点,根据具体情况来使用。在"Hello, WPF!"一章中,我们已经使翻译 2016-10-13 23:46:24 · 7950 阅读 · 0 评论 -
WPF教程(十三)WPF异常处理
如果你熟悉C#或其他.NET语言,那么一定知道异常处理。任何时候,如果你觉得有段代码很有可能会抛出一个异常,那么就应该用try-catch块来处理这个异常。考虑下面的例子:private void Button_Click(object sender, RoutedEventArgs e){ string s = null; s.Trim();}很明显,运行翻译 2016-10-13 22:18:35 · 8031 阅读 · 0 评论 -
WPF教程(十二)资源
WPF介绍了一个非常方便的概念:把数据储存为一种资源,无论是本地控件、本地窗口还是全局应用。数据可以是任何你想要的东西,从实际的信息到WPF控件的层次结构都行。这非常有用,你可以把数据放在一个地方,然后在其他地方调用它。这个概念被广泛用在样式和模版,我们后面会详细讲到。也可以用在很多别的地方,就像本章要说明的地方,例子如下:<Window x:Class="WpfTutorialSampl翻译 2016-10-13 21:35:57 · 4660 阅读 · 2 评论 -
WPF教程(二) WPF vs WinForms
在前面的章节,我们讨论了WPF是什么,还涉及了一点点WinForms。在本章节,我将尝试比较两者,尽管它们服务的目的一样,却存在很多的区别。如果你以前从来没有接触过WinForms,或者WPF是你学习的第一种GUI框架,请跳过这一章节。但是如果你有兴趣的话,不妨尝试一读。先说说两者最重要的区别。WinForms只是标准窗体控件顶部的一层(如文本框),而WPF从零开始,几乎在所有场景下都不依赖于翻译 2016-09-21 21:56:08 · 8159 阅读 · 0 评论 -
WPF教程(一) WPF是什么?
WPF,即Windows Presentation Foundation,是微软基于.NET框架下最新的GUI方法。那什么是GUI框架呢?GUI是指图形用户界面(Graphical User Interface),这是什么东西呢,也许你现在正盯着它看呢。Windows窗口就有一个GUI,而你读这篇文章的浏览器也有一个GUI来使你上网。GUI框架允许你用各种GUI元素(包括标签、文本框以及其翻译 2016-09-20 22:07:50 · 16347 阅读 · 0 评论 -
git工作实录
刚入门了git,然后在实际应用中就出现了很多问题。这种问题也只有在实践中才会发现。场景如下:我正在编写一个新的功能模块,突然接到通知说需要紧急修改一个bug。新的功能模块还没写完呢,没法提交,怎么办?大体结构如下:创建master、dev、bug三个分支。主分支master用于托管完整可用的代码。dev分支用于当前工作。bug分支用于随时修改bug,需要修改bug时创建原创 2016-10-09 12:59:07 · 1123 阅读 · 0 评论 -
WPF教程(六) XAML基础
在前面的章节,我们讨论了XAML是什么以及用它来做什么,那么如何用XAML来创建控件呢?接下来的例子,我们将会看到,用XAML创建一个控件,就和写它的名字一样简单,当然了,这个名字是用尖括号括起来的。譬如,按钮看起来是这样的:XAML标签通过编写结束标签或者在开始标签之后加一个斜杠来结束:或者大部分控件允许你在开始标签和结束标签之间放置控件所需的内容,譬如,按钮控件允许你在开始标签翻译 2016-09-22 21:46:52 · 8778 阅读 · 0 评论 -
WPF教程(五) XAML是什么?
可扩展标记语言(XAML)是微软用来描述图形用户界面的一种XML变体。像WinForms这种早期的图形用户界面框架,通常用同一种语言和GUI来交互,如C#和VB.NET;使用设计器来维护GUI,如VS。而这一次,微软采取了另外一种方式,这种方式非常像HTML,你能够很容易的编写设计GUI。仅管这里不是XAML的教程,我还是简单的说一下如何使用XAML,因为它是WPF非常重要的一部分。不管你是要翻译 2016-09-22 20:32:11 · 5564 阅读 · 0 评论 -
嵌入式linux入门一
前言测油仪从第一代到第二代再到现在第三代的开发,一路都是摸索着爬滚前行。第一代使用vb,这个还是有点基础的,然而用起来并不是那么顺畅,加之本身的局限性,用起来很累。第二代使用C#,顿时高大上了,然而并没能深入进去,到现在,委托啊、接口啊、线程啊,都没搞清楚。到了第三代,改用嵌入式linux了,又是全新的开始。准备网上搜了搜,最终买了韦东山的JZ2440开发板,也买了他的书《原创 2016-05-07 21:36:42 · 744 阅读 · 0 评论 -
C#中如何将‘4’转换成4
还是来搞搞一些基础的东西,字符串转换成整型很简单,zixuy原创 2014-07-21 14:53:52 · 1235 阅读 · 0 评论 -
C#中关于类型的转换
编程过程中经常遇到的几种数据格式:0x3原创 2014-07-18 16:53:11 · 783 阅读 · 0 评论 -
WPF教程(三) Visual Studio Express
前面我们已经描述过,WPF是一个XAML(标记语言) 与.NET语言(C#、VB.NET及其他) 的联合体。任何文本编辑器(甚至连Windows底下的记事本)都能编辑它们,然后使用命令行编译。但是,大部分开发者都会使用一个集成开发环境(IDE),在IDE下,写代码、设计界面、编译都变得特别简单。很多人都会选择Visual Studio作为.NET/WPF的IDE,但是需要花费很多钱。幸运的是,翻译 2016-09-21 22:17:58 · 5278 阅读 · 0 评论 -
WPF教程(四) Hello,WPF!
在所有编程教程中,第一个例子永远都是经典的“Hello,world!”,在这里我们稍微自恋一下,改成"Hello,WPF!"。本例子简单的将这条文本显示在屏幕上,让你明白开始学习WPF有多么容易。接下来的教程都默认你已经安装了一个IDE,最好是 Visual Studio 或者 Visual Studio Express (参考上一节以获取下载信息)。如果你使用的是其他产品,按照产品说明的指示翻译 2016-09-21 23:10:10 · 11492 阅读 · 1 评论 -
WPF教程(二十三)WPF面板简介
面板是WPF中最重要的控件之一,用于存放其他控件,或者控制窗口/页面的布局。由于一个窗体只能放置一个子控件,因此面板用来隔成多块区域,这些区域各自可以放置一个控件或者面板(别忘了面板也是控件)。面板分不同的形式,每一种都有其自己处理布局以及控制其子控件的方式。因此选择一种合适的面板对于实现你想要的形式和布局非常重要,尤其是你刚开始用WPF的时候,不是那么容易。下面的内容将简单地介绍每种面板,让翻译 2016-10-22 16:38:39 · 2850 阅读 · 0 评论 -
WPF教程(三十三)数据绑定简介
维基百科这样描述数据绑定的概念:数据绑定是一种通用的技术,把两个数据或信息资源绑定到一起,并保存数据同步。在WPF中,微软把数据绑定放在了重要位置,一旦你开始学习WPF,你就会发现,它几乎是你做的所有事情的一个重要方面。如果你来自WinForms的世界,你会惊讶于如此高度重视数据绑定,但是一旦你使用过它,你就会喜欢上它。它让很多事情变得清晰,易于维持。WPF中的数据绑定是把代码中的数据带到翻译 2016-11-03 23:01:00 · 2527 阅读 · 0 评论 -
ASP.NET教程(一) 概述
欢迎来到ASP.NET教程。根据微软的定义,“ASP.NET是一种用于创建强大、动态的网站应用的技术,它是.NET 框架的一部分”。本教程将从零开始来指导你学习ASP.NET,不需要任何服务器端脚本的基础。当然啦,有基本的HTML和CSS知识是最好的了。如果你已经学过经典ASP或者PHP,也不要得瑟,在这里你并没有什么优势,因为ASP.NET是一种全新的处理技术。.NET是一种独立的语言,这意翻译 2016-11-03 22:04:36 · 1957 阅读 · 0 评论 -
WPF教程(二十六)StackPanel
StackPanel基本和WrapPanel一样,但是有一个重要的区别:StackPanel不会自动切换内容。相反,它会让内容朝一个方向延伸,一个接一个的堆起来。先来快速看一个例子:<Window x:Class="WpfTutorialSamples.Panels.StackPanel" xmlns="http://schemas.microsoft.com/winfx/20翻译 2016-10-23 12:03:18 · 3662 阅读 · 0 评论 -
WPF教程(二十五)WrapPanel
WrapPanel用于一个接一个的排列子控件,以水平或者垂直方向,当空间不足时就会自动切换到下一行。适合于需要水平或者垂直排列控件且能自动换行的情况。水平方向排列时,每一行所有子控件的高度都被统一成固定的值,这个值由最高的那个决定;每一列垂直方向排列时,所有子控件的宽度都被统一成固定的值,这个值由最宽的那个决定。我们先来看默认情况下的WrapPanel:<Window x:Class=翻译 2016-10-22 18:54:05 · 12725 阅读 · 0 评论 -
WPF教程(八)WPF应用简介
本教程的终极目标是使用WPF创建应用。.NET能在所有装了.NET工具的平台上执行,最常见的还是微软的Windows.在这里我们所说的Windows应用,是指运行在Windows(或者其他兼容平台)下,而不是在浏览器或者因特网上。像其他.NET应用类型一样,WPF应用也只能运行在.NET框架里。幸运的是,从Vista开始,微软已经把.NET框架做到了所有Windows版本里,而且能够通过Win翻译 2016-09-26 22:32:24 · 3623 阅读 · 0 评论 -
WPF教程(七)XAML中的事件
大多流行UI框架都是事件驱动的,WPF也是如此。所有的控件,包括继承了控件类的窗口,公开了一系列事件,你可以直接订阅,这意味着当事件发生时,它会告知应用程序并执行相应动作。事件有很多种类别,通过鼠标和键盘来响应用户界面,这种是最常用的事件。大部分控件都包含KeyDown, KeyUp, MouseDown, MouseEnter, MouseLeave, MouseUp等事件。我们将仔细看翻译 2016-09-22 23:11:18 · 8392 阅读 · 4 评论