摘要: 上一篇我们已经介绍了如何使用NuGet把MVVMLight应用到我们的WPF项目中。这篇我们来了解下一个基本的MVVMLight框架所必须的结构和运行模式。 MVVMLight安装之后,我们可以看到简易的框架布局,如上篇,生成了一个ViewModel文件夹,ViewModel层的内容都放在这边,除了 阅读全文
posted @ 2017-05-25 09:34 龙腾飞 阅读(1666) 评论(1) 推荐(1) 编辑
摘要: 一、MVVM 和 MVVMLight介绍 MVVM是Model-View-ViewModel的简写。类似于目前比较流行的MVC、MVP设计模式,主要目的是为了分离视图(View)和模型(Model)的耦合。 它是一种极度优秀的设计模式,但并非框架级别的东西,由MVP(Model-View-Prese 阅读全文
posted @ 2017-05-25 09:30 龙腾飞 阅读(3388) 评论(0) 推荐(0) 编辑
摘要: 如果您在使用WPF/Silverlight进行相关动画开发中使用了Storyboard,并对关联属性进行了动画修改,那么您是否有注意到这些关联属性常常无法再通过直接赋值的形式去修改,尽管它的值已经被更改,但却始终无法在界面上得以体现。例如,在我的C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial)教程里大量运用了Storyboard对角色的X,Y坐标关联属性以及角色Direction朝向关联属性进行动画形式修改;如果统一的每次更改均使用Storyboard是不会存在任何问题的,结果是所见即所得。但是如果大家在使用Storyboard更改了朝向Directi.. 阅读全文
posted @ 2013-11-22 11:26 龙腾飞 阅读(297) 评论(0) 推荐(0) 编辑
摘要: #region 进程发送消息 public const int WM_COPYDATA = 0x004A; [DllImport("User32.dll", EntryPoint = "FindWindow")] public static extern IntPtr FindWindow(string lpClassName, string lpWindowName); /// /// 定义用户要传递的消息的数据 /// [StructLayout(LayoutKind.Se... 阅读全文
posted @ 2013-11-21 13:22 龙腾飞 阅读(407) 评论(1) 推荐(0) 编辑
摘要: 添加Microsoft.VisualBasic引用,头引用using Microsoft.VisualBasic.ApplicationServices;打开App.xaml.cs文件,将文件修改为如下 class Program { [STAThread] static void Main(string[] args) { SingleInstanceApp a = new SingleInstanceApp(); a.Run(args); } } /// /... 阅读全文
posted @ 2013-11-19 09:21 龙腾飞 阅读(371) 评论(0) 推荐(0) 编辑
摘要: protected override void OnStartup(StartupEventArgs e) 2{ 3 Process process = Process.GetCurrentProcess(); 4 5 foreach (Process p in Process.GetProcessesByName(process.ProcessName)) 6 { 7 if (p.Id != process.Id) 8 { 910 //关闭第二个启动的程序1112 MessageBox.Show("... 阅读全文
posted @ 2013-11-19 09:17 龙腾飞 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 有时我们不希望我们的WPF应用程序可以同时运行有多个实例,当我们试图运行第二个实例的时候,已经运行的实例也应该弹出来。我们可以用Mutex来实现打开App.xaml.cs,在App类中添加如下内容 public partial class App : Application { [DllImport("user32", CharSet = CharSet.Unicode)] static extern IntPtr FindWindow(string cls, string win); [DllImport("user32")] ... 阅读全文
posted @ 2013-11-19 09:06 龙腾飞 阅读(297) 评论(0) 推荐(0) 编辑
摘要: //color转为brush: Brush br = new SolidColorBrush(Color.FromRgb(0,0,0)); //string转Color (Color)ColorConverter.ConvertFromString((string)str); //color转为brush:Brush br = new SolidColorBrush(Color.FromRgb(0,0,0)); //string转Color(Color)ColorConverter.ConvertFromString((string)str);[csharp] view plai... 阅读全文
posted @ 2013-10-11 13:34 龙腾飞 阅读(1179) 评论(0) 推荐(0) 编辑
摘要: [转载]ImageSource的使用心得很多时候,我们会使用图片来装饰UI,比如作为控件背景等。而这些图片可以分为两种形式,即存在于本地文件系统中的图片和存在于内存中的图片对于这两种形式的图片,在WPF中,使用方法不同,下面主要说明针对这两种形式图片的使用方法一、存在于本地文件系统中的图片文件对于此类图片,使用非常简单,在xaml中直接指定路径即可,如:12345对应的的C#代码为1ImageBrushimageBrush=newImageBrush();2imageBrush.ImageSource=newBitmapImage(newUri("bg.jpg",UriKi 阅读全文
posted @ 2013-10-11 13:33 龙腾飞 阅读(16245) 评论(0) 推荐(0) 编辑
摘要: 虽然在WPF中可以使用TranslateTransform、RotateTransform、ScaleTransform等进行几何变换,但我们也可以使用更底层的MatrixTransform(矩阵变换)来进行更复杂的复合变换。 首先我们矩阵如何影响几何变换的: 1,缩放操作 观察下面的矩阵乘法 如果我们用[2 5]代表点(2,5),我们发现其乘以一个矩阵后变成了[4,5],与之对应的点是(4,5),这相当与其X坐标变成了原来的两倍。 同理: 经过矩阵乘法后点(2,5)的Y坐标变成了原来的两倍(2,10)。 我们可以总结出这样的结论: 可以将矩阵的第二和第三个元素设置为0并... 阅读全文
posted @ 2013-09-30 09:52 龙腾飞 阅读(697) 评论(0) 推荐(0) 编辑