随笔分类 -  WPF

Dispatcher.Invoke方法
摘要:前一篇小猪分享过在WPF中简单的使用BackgroundWorker完成多线程操作!在那篇中小猪利用了BackgroundWorker组件对耗时比较多的操作放在了单独的BackgroundWorker里来完成,例如说:网络请求的登录操作,说到网络请求当然还有另外一种请求:网络下载。当客户端需要进行网络下载操作时如果只是简单的用多线程这么一个操作而不给用户知道当前的下载进度的话那么用户将不知道已经下载了多少,甚至有可能直接关闭了主应用程序。那就杯具了。这时候就涉及到在另外的线程中来更新UI,但是WPF却明确的规定:UI元素只能由其主线程来操作,其他任何线程都不可以直接操作UI。而实时的下载进度又 阅读全文
posted @ 2014-03-20 16:47 smallerpig 阅读(9481) 评论(0) 推荐(2)
使用OpenFileDialog会更改默认程序目录
摘要:这个问题可能只有在特定的程序中会发现:当我们在程序中使用相对路径时是依赖于当前目录的。所以在使用类似代码:XElement rootNode = XElement.Load(@"zips/"+book.Id+"/"+src);时程序会加载当前dll文件下的zips文件夹下的对应文件。而如果这个时候如果我们在窗体上使用了OpenFileDialog打开文件后,对应的默认文件夹就会做了相应的改变,使用同样的语句可能就会报错。见如下测试代码:OpenFileDialog open = new OpenFileDialog();open.Filter = fil 阅读全文
posted @ 2014-03-10 17:33 smallerpig 阅读(1451) 评论(0) 推荐(0)
WPF 让Enter键按下时默认为某按钮(Button)事件
摘要:在编写web程序时我们经常用到按Enter键来提交表单,在WPF中我们也常常需要这样的功能:例如在填写登录框信息时当填写完密码之后我希望直接按Enter键就能完成登录操作。这个需求如何来完成呢?其实很简单,在需要执行的按钮中修改属性IsDefault属性设置为true即可:参考:http://stackoverflow.com/questions/4194470/how-to-make-a-submit-button-in-wpf 阅读全文
posted @ 2014-03-10 16:12 smallerpig 阅读(2770) 评论(0) 推荐(0)
让窗体大小固定、任务栏不显示
摘要:窗体大小调整Windows下的ResizeMode属性: ResizeMode = NoResizeResize属性是控制Windows是否可以改变大小,怎样改变大小的属性。ResizeMode的所有枚举如下:成员名称说明NoResize无法调整窗口的大小。标题栏中不显示“最小化”和“最大化”按钮。CanMinimize只能最小化和还原窗口。同时显示“最小化”和“最大化”按钮,但只有“最小化”按钮处于启用状态。CanResize可以调整窗口的大小。同时显示“最小化”和“最大化”按钮,并且两个按钮均处于启用状态。CanResizeWithGrip可以调整窗口的大小。同时显示“最小化”和“最大化” 阅读全文
posted @ 2014-03-05 10:04 smallerpig 阅读(320) 评论(0) 推荐(0)
让你的WPF程序使用多线程——BackgroundWorker
摘要:在wpf中可以使用许多方法执行异步操作。利用.NET的芳芳就是手动创建一个新的System.Threading.Thread对象,提供一步代码,并使用THread.Start()方法加载代码。这种方法很有用,因为Thread对象没有隐瞒任何内容。如果你愿意,可以创建几十个线程,设置他们的优先级,控制他们的状态(如暂停、恢复以及中止它们)等等。然而,这种方法也存在一些危险。如果访问了共享数据,需要使用锁定机制来避免潜在的错误。如果频繁创建线程或者大量创建线程,会产生额外的、不必要的开销。编写良好的多线程代码的技术——以及将要使用的.NET类——不是特定于WPF的。如果曾经在windows窗体应用 阅读全文
posted @ 2014-02-26 13:41 smallerpig 阅读(1964) 评论(0) 推荐(0)
InitializeComponent System.StackOverflowException
摘要:因为一直重复调用了InitializeComponent,WPF报System.StackOverflowException错误,提示死循环似的调用。经过一阵排查得出下面结论:避免在隐藏代码中使用ObjectDataProvider 来调用该类自己的方法小猪就是犯了这么个错误:在MenuData.xaml.cs里调用其静态方法来创建目录数据这样在MenuData类的初始化函数里就不能再加上InitializeComponent 函数了,加上就报循环调用了。不加上可以运行程序但是在关闭该程序后,后台进程却一直处于运行中,必须启用进程管理器强行结束进程,另外就是其他窗口调用其构造函数并显示时会显示 阅读全文
posted @ 2014-02-25 13:37 smallerpig 阅读(328) 评论(0) 推荐(0)
WPF TreeView的使用
摘要:WPF提供了treeView控件,利用该控件开发者可以将数据分层显示在树结构中。当然其中需要用到Binding的机制,有用的类包括:ObjectDataProvider、DataTemplate、HierarchicalDataTemplate、ItemsSource等等。您可以用声明的方式解释 WPF 应如何通过分层数据模板呈现分层数据。利用 HierarchicalDataTemplate 类这一工具可以弥补复杂数据结构与该数据的直观表示之间的缺口。它与常用 DataTemplate 非常相似,但还允许您指定数据对象子项的来源。您还可以为 HierarchicalDataTemplate 阅读全文
posted @ 2014-02-22 16:29 smallerpig 阅读(1796) 评论(0) 推荐(0)
C# 检测网络链接
摘要:private const long INTERNET_CONNECTION_MODEM = 1;//Local system uses a modem to connect to the Internet.private const long INTERNET_CONNECTION_LAN = 2; //Local system uses a local area network to connect to the Internet.private const long INTERNET_CONNECTION_PROXY = 4;//Local system uses a proxy ser 阅读全文
posted @ 2014-02-20 14:24 smallerpig 阅读(423) 评论(0) 推荐(0)