自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 资源 (7)
  • 收藏
  • 关注

翻译 #604 – 定义一个路由事件(Defining a New Routed Event)

你可以在自定义的控件或者类中创建一个新的路由事件。在下面的例子中,我们在MyButton 类中定义一个取名为RightDrag 的路由事件。首先,定义一个静态的RoutedEvent 类型变量。public static readonly RoutedEvent RightDragEvent;在静态的构造函数中,注册一个事件,并设置RoutedEvent 实例。static My

2016-12-28 14:39:10 613

翻译 什么时候使用Decimal 类型(When to Use the Decimal Type)

在货币或者财务方面的计算的时候建议使用decimal (System.Decimal)类型,或者在你需要使用很多位小数以及高精度的时候应该使用decimal 类型,以避免舍入方面的错误。比如:float f1 = 12345678901234567.28f; // 1.23456784E+16double d1 = 12345678901234567.28d; // 123

2016-12-26 17:57:10 2123

翻译 #600 – 注册一个路由事件(Registering a Routed Event)

当你在类中要实现一个路由事件的时候,你最终都是要创建一个RoutedEvent 类型的实例。你创建RoutedEvent 类型的实例,其实就是间接的调用了EventManager.RegisterRoutedEvent方法。这个方法接收你想要传递的一些事件信息,并返回一个静态的RoutedEvent字段。事件通常会在静态的构造函数中或者事件声明的时候注册,所以对于你来说,到最后你只得到一个Ro

2016-12-26 17:30:37 1265

翻译 #595 – 定义事件处理函数的语法(Syntax Choices for Defining an Event Handler)

加上不使用UIElement.AddHandler 函数,还是有许多中方法定义事件处理函数。最常用的是声明一个该事件类型的委托的实例,并指定方法。myButton.Click += new RoutedEventHandler(myButton_Click);myTextBox.KeyDown += new KeyEventHandler(myTextBox_KeyDown);更简

2016-12-21 12:44:23 444

翻译 标识符

C#中的标识符是你给变量,类实例,接口实例,方法和属性等起的名字。它遵循以下规则: -区分大小写(比如“name”和“Name”是不一样的标识符) -必须以字符或者下划线“_”开始 -不能包含空格 -可以包含Unicode 字符 -不能喝内置关键字一样你实际上可以在内置关键字前面加一个‘@’字符来作为标识符。在下面的例子中声明一个string 类型的变量取名为“@s

2016-12-13 15:03:55 522

翻译 #586 – 冒泡事件和隧道事件通常是成对出现(Bubbling and Tunneling Events Are Typically Paired)

WPF中的系统事件一般都是路由事件,陆有事件可以是冒泡也可以是隧道事件,事件在逻辑树中向上或者向下传递。WPF中许多和用户输入有关的事件一般都是冒泡和隧道事件成对的出现。例如,KeyDown 事件(冒泡)和PreviewKeyDown 事件(隧道)是一对。当他们成对出现的时候,隧道事件一般会首先被触发,然后是冒泡事件。例如下图中,Window包含一个StackPanel,StackPa

2016-12-13 14:29:14 978

翻译 #585 – 隧道事件沿逻辑树从上至下传递(Tunneling Events Propagate Down the Logical Tree)

在WPF中,冒泡事件从引发事件的控件开始,沿着逻辑树或者可视树向上传递。与之相反,隧道事件则是从层次结构的顶点出发,由上至下传递直到传递到引发事件的控件。下面的代码中我们给各层的控件都注册了PreviewKeyDown 事件,然后在最下面的TextBox中按键输入。<Window xmlns="http://schemas.microsoft.com/winfx/2006/xa

2016-12-13 10:06:37 584

翻译 在Visual Studio 2010中指定命令行调试参数(Specify Command Line Arguments in Visual Studio 2010)

通常情况下在我们调用程序的时候会需要传递命令行参数。然而,在测试程序的时候,我们希望指定命令行传入的参数。你可以在项目属性窗口中进行设置,比如在Debug页面。在上图中的位置可以指定程序命令行传入的参数。注意: -你可以在所有类型的项目中这么设置,比如win form ,WPF或者控制台程序 -你可以分别在Debug和Release模式下指定参数 -这些参数只会在调试模式下

2016-12-12 16:29:56 2839

原创 使用AddHandler 方法处理已经被处理的事件

所有的UIElement 实例及其子类的实例都有一个AddHandler 方法。通过该方法可以为指定的路由事件添加处理函数,并将该处理程序添加到当前元素的处理程序集合中。AddHandler 方法有一个AddHandler(RoutedEvent, Delegate, Boolean) 的重载。第一个参数表示指定的路由事件;第二个参数指定事件的处理函数;第三个参数表明是否在事件被标

2016-12-12 11:36:38 10428

翻译 #575 – PropertyMetadata 和其子类的区别(PropertyMetadata vs. FrameworkPropertyMetadata)

当你要实现一个自定义的依赖属性的时候,要调用DependencyProperty.Register函数注册属性,你要指定一个PropertyMetadata 类型的元数据。元数据应该是PropertyMetadata 类或者其子类的实例。他们之间的区别如下:PropertyMetadata ——依赖属性的基本元数据 - CoerceValueCallback ——当设置属性值的时候强制转换

2016-12-10 11:37:32 3505

翻译 #559 – 画一个带蒙版的渐变图(Drawing a Masked Gradient in Blend)

你可以将简单形状的不透明蒙版和一些渐变颜色组合在一起生成类似剪纸一样的效果。下面的例子,可以生成一个云朵状的效果。要这样的效果,首先要有个使用渐变色填充的Rectangle 。 然后生成一个云朵状的图片,黑色是不透明,其他的背景色为透明。

2016-12-08 09:48:13 876

原创 使用OpacityMask 属性

UIElement 有OpacityMask 属性,它表示当前元素的不透明蒙版。该属性的值是Brush 类型,当给属性赋值后,该属性仅使用Alpha 通道值,其他通道(RGB)通道将会被忽略。下面的例子使用LinearGradientBrush 渐变色作为图像的不透明蒙版。原图不设置不透明蒙版显示如下:设置渐变画刷为不透明蒙版:

2016-12-07 18:11:50 6010

翻译 #556 – 根据Border的圆角裁剪内容(Clipping to a Border Using an Opacity Mask)

当你为一个Border 元素指定圆角的时候,Border 所包含的内容却无法自动的根据圆角进行裁剪。<Border BorderBrush="Black" BorderThickness="3" Margin="10" Width="400" Height="267" CornerRadius="40" > 上面的例子中,如果你想根据Border来裁剪内容,

2016-12-07 15:45:31 2048

翻译 #508 – 显示繁忙等待提示(Displaying a Spinning Busy Indicator)

你会发现,当程序正在进行某项耗时的工作的时候常常会显示一个旋转的圆形图标。在WPF中你可以非常简单的用Image 控件实现这个功能。下面的例子中,你有一个当Busy 属性设置为为ture的时候会进行旋转动画的Image 控件(通过按钮点击触发)。 <Image Source="Images\Spinny3.jpg" Height="40" Width="40" Stretch="N

2016-12-07 14:50:12 532

翻译 #502 – Sender 和RoutedEventArgs.Source的区别(Sender vs. RoutedEventArgs.Source)

但你处理RoutedEvent 或者其子类的的时候,你可以通过RoutedEventArgs.Source 属性来获得事件的来源,同时事件处理函数同样也有一个sender 参数来指出事件的来源。在路由事件中,RoutedEventArgs.Source 是引发事件的控件的引用,而sender 是事件处理程序拥有者的引用。在下面的例子中,RoutedEventArgs.Source 是But

2016-12-05 19:29:31 954

翻译 #495 – 绑定Visibility 属性不需要转换器类(Binding to a Visibility Property Without Using a Value Converter)

在绑定Visibility属性的时候,你可以使用一个转换器converter将string类型转换为System.Windows.Visibility 类型。你也可以直接将string类型设置给Visibility 属性,不需要转换器。下面的例子中。我们绑定选中的ComboBoxItem的Content 属性。Content 里面包含的是字符串,绑定的过程中不需要转换转换器。

2016-12-05 19:07:10 1296

翻译 #489 – 使用InkCanvas 进行手势识别(Using the InkCanvas to Recognize Gestures)

你可以设置InkCanvas 的EditingMode 属性进行手势识别。如果设置EditingMode 属性为GestureOnly, 用户将不能在控件上绘图,但是如果使用鼠标或者其他输入设备在控件上绘制手势,InkCanvas 将尝试对手势进行识别。在这个模式下,只要你不放开鼠标或者输入设备,任何你绘制的图像将会显示,一旦放开就会消失。正在绘制时:绘制完成时:一旦你完成

2016-12-05 11:56:59 1949

翻译 #487 – 在InkCanvas上绘图时指定DrawingAttributes (Specify DrawingAttributes When Drawing to an InkCanvas)

你可以在InkCanvas 控件上绘图的时候指定各种不同的绘图属性,以到达不通的画笔呈现效果。DrawingAttributes 有很多属性,改变这些属性可以改变画笔的呈现。你可以将一个DrawingAttributes 实例设置给InkCanvas 的DefaultDrawingAttributes 属性。请注意,DefaultDrawingAttributes 属性的更改只作用于在其更改后的绘

2016-12-02 17:23:17 1421

翻译 #486 – InkCanvas 支持多种编辑模式(InkCanvas Supports Different Editing Modes)

InkCanvas 控件有一个EditingMode 属性允许用户改变用户与InkCanvas的交互方式。你可以在上面画图,选中已画的部分,或者擦除。EditingMode 属性可以设置以下几种值: - None —— 不可以在InkCanvas 上绘图 - Ink ——可以用户表或者手写笔在InkCanvas 上绘图 - GestureOnly ——InkCanvas 只响应

2016-12-02 16:33:02 1341

原创 使用ObjectDataProvider 将函数应用到绑定

ObjectDataProvider 类用于包装和创建可以用作绑定源的对象。创建一个对象用作于绑定源的方法有多种。比如在代码中创建对象并将其设置为窗口的DataContext,后者在XAML页的资源部分创建对象。ObjectDataProvider 使你能够在 XAML 中创建可用作绑定源的对象。ObjectDataProvider 提供ConstructorParameters属

2016-12-02 14:34:48 2092

翻译 #481 – 在InkCanvas 上使用鼠标绘图(You Can Draw On an InkCanvas Control with the Mouse)

你可以使用InkCanvas 控件包含一个用户可以在界面上使用鼠标或者其他输入设备绘图的区域。默认情况下,InkCanvas 控件允许使用鼠标绘图,每次点击或者按右键拖动鼠标,都会创建一个在InkCanvas 上画图的画笔。 画一张草图。你也可以像Canvas 控件一样

2016-12-01 17:32:57 2274

翻译 #479 – 对Canvas面板中的子元素使用布局转换(Using a Layout Transform on Child Elements in a Canvas)

你可以使用对Canvas面板里面的子元素使用LayoutTransform 对其进行灵活的变换。在这里问讨论除了TranslateTransform 以外的几种变换RotateTransform,ScaleTransform 和SkewTransform。

2016-12-01 16:23:31 493

原创 WPF制作抖动按钮

在WPF中,Transform类可以非常方便的实现旋转、缩放、扭曲和平移操作,一两行代码就能达到意想不到的效果。更让人欣喜的是Transform 还支持动画,这样可以让我们十分简单的在UI上实现很多有趣的动画。下面就介绍一个通过RotateTransform 的动画实现按钮抖动的例子。原理很简单:通过将RotateTransform 的Angle属性进行动画绑定,使按钮来回旋转。问了更好的

2016-12-01 14:43:37 2549

你比我猜,游戏程序(windows)

公司年会的时候需要做一个你比我猜的游戏,于是让我写了一个游戏UI,十分简单,现在分享出来给大家。这个程序需要.Net Framework4

2018-01-31

WPF播放GIF图片源代码

WPF播放GIF项目,里面有实现了一个控件(GIFImage)播放GIF控件,然后在窗体中使用。这个控件可以单独拿出来使用。

2016-09-23

WPF拖曳例子

WPF拖曳例子

2016-06-28

WPF Drag Drop例子

WPF Drag Drop例子

2016-06-28

官方WPF 拖曳例子源代码

官方WPF 拖曳例子

2016-06-28

微软C#无线网络管理库

微软官方C#编写的无线网络管理类库

2016-05-24

电脑报VC++教程

简单易懂的介绍了MFC编程,示例不错,适合新手。

2007-12-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除