随笔分类 - 07.WPF/Silverlight
摘要:
Silverlight调用本机exe程序
阅读全文
![](http://images.cnitblog.com/blog/27612/201412/252254033908634.png)
摘要:
Silverlight如何发起Get/Post请求
阅读全文
![](http://images.cnitblog.com/blog/27612/201412/252254033908634.png)
摘要:
阅读全文
![](http://images.cnitblog.com/i/27612/201407/162301097879147.png)
摘要:企业应用中,经常会遇到一些需要定时自动执行的程序来完成某些功能,比如:自动定时从第三方web service取回数据、定时对历史数据进行清理、定时向ftp上传业务数据...这类程序,我习惯称为“机器人”程序,就象机器一样机械、高效、重复的执行某些任务。通常部署上线后,都是放在服务器上一直开着,不允许轻易被关闭,而且最好要有一个界面,随时可以手动方便控制状态或查看运行情况,一旦发生异常情况,能及时通知管理员(Email或短信之类)如果是采用WPF技术开发,以下是几个需要注意的地方:1、无边框窗体(防止用户不小心点到 右上角的关闭按钮)将主窗体的WindowStyle设置成None即可2、无边框窗
阅读全文
摘要:业务背景:航空货运系统中,“货运代理商”会定期从“航空公司”领取一定数量的纸质运单(每张纸上有一个单号),这些单号都是连续的(即:每次可以理解为领取一个“号段”),而且每张单子都要向航空公司交纳一定的费用(即:单号是有价的资产)。实际使用中,货运代理商希望下级的各营业点连续把单号用完,如果出现未连续...
阅读全文
摘要:在IE中,JS可以直接访问剪贴板,但是firefox,chrome等其它"高级"浏览器,就没这么幸运了。网上流传的所谓兼容firefox/IE的剪贴板访问javascript代码,都是N年前的往事了。根据http://mozilla.com.cn/post/49413/上的说法:----------------------------------火狐不允许网页操作用户的剪切板,因为有安全问题,网页可能盗用你复制的密码等等。以前可以通过修改设置提权,允许网页获得高权限,操作剪切板,目前火狐已经取消了这个接口。不再允许,所以修改了设置也无效,目前还是自己通过快捷键复制吧。---
阅读全文
摘要:业务系统中,很多录入人员习惯于用Enter键来代替Tab键切换控件焦点(虽然我个人并不觉得这样录入速度会变得有多高效,呵呵),有需求了,自然就得想办法满足。思路:为了更灵活的控件焦点顺序,我决定用TabIndex来做文章,每个输入控件按下回车时,找到下一个比当前控件TabIndex更大且最接近的控件,然后focus().XAML界面部分:<UserControl x:Class="tab_key_test.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation&qu
阅读全文
摘要:今天遇到一个需求,要求能对可拖动的对象提供二种模式:允许拖动、禁止拖动。之前的拖动为了省事,直接用了:Blend自带的MouseDragElementBehavior,于是就需要在cs代码中控制这个东东了。折腾了一下,还算简单:xaml代码<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://sc
阅读全文
摘要:telerik的控件总体来说质量还算上乘,但是偶尔也会遇一些小bug:比如 <telerik:RadMaskedTextBox Mask="n" MaskType="Numeric"/>,这样的本意是让输入框只能输入带小数位的数字,但是很多用户在输入“零点几”的小数时,通常直接输入".12",即:不输入第一个0,直接输入点,这时你会杯具的发现,整个屏幕直接白了(Silverlight应用程序级的错误).我没看telerik的源码,任感觉猜测应该是".“在Convert成浮点数时抛异常了(老外估计也没想到中国人这么
阅读全文
摘要:Silverlight并没有象flash那样直接提供画线、画圆、画曲线的方法,只能用Path来生成贝塞尔曲线。下面是示例代码:XAML部分:<UserControl x:Class="SLCurveSample.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.m
阅读全文
摘要:iFrame如果嵌入的是普通网页,这种场景下的iframe高度自适应解决方案,百度一下随手都能找到一大把。但是嵌入Silvelight时,嵌入iframe的父页面默认不知道Silverlight内容的真实高度,所以上述办法就不起作用了。其实只要换个思路:既然父页面不知道iframe中SL的高度,SL难道不能自己主动向父页面汇报自已的高度吗?先看最终的效果:注:Page1,Page3均是SL中的UserControl代码见下面的源代码:主要步骤为1、SL在每个页面的Page_Loaded中,通过与父页面的js交互,主动报告当前SL页面的高度2、父页面得到高度后,用js动态调整iFrame/Fra
阅读全文
摘要:直接给码:<UserControl x:Class="SilverlightApplication1.MainPage" 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="
阅读全文
摘要:默认情况下,Silverlight自带的ListBox控件如果内部有多个TextBox,用户无法用键盘上的Tab键,在ListBox内部的TextBox之间切换。但Teterik RadControls 中的telerik:ListBox却很好的解决了这个问题,只要把telerik:ListBox的IsTabStop设置成false,同时把TabNavigation设置成Local即可(而SL自带的ListBox就算设置了这二个属性,Tab键需要按二次才能切换焦点)完整Xaml代码:<UserControl xmlns="http://schemas.microsoft.com
阅读全文
摘要:当RadGridView中嵌套RadComboBox,且RadGridView的高度不够出现滚动条时,上下拉动滚动条后,RadComboBox中的选中值将丢失!如下图:滚动条未拖动前滚动条上下拖动后(注意下图的高亮部分)重现该Bug的测试代码:Model层TextValueObject.csnamespace RadControlsBug.Model{ public class TextValueObject { public string Text { set; get; } public string Value { set; get; } }...
阅读全文
摘要:直接给码:using System;using System.IO;using Telerik.Windows.Zip;namespace JIMMY{ public static class ZipHelper { /// <summary> /// 利用telerik的zip库压缩字符串 /// </summary> /// <param name="str"></param> /// <returns></returns> public static string CompressString..
阅读全文
摘要:当ScrollViewer里包含很多子控件时,默认情况下只能用鼠标手动拖动(或滚轮)滚动条以实现内容的滚动,假如用户是键盘高手,习惯于用Tab键来切换子控件焦点时,即使当前获得焦点的控件在不可见区域,滚动条也不会自动跟随着滚动到相应位置,这个非常不方便,今天在网上看到一个老外的解决办法,代码转贴于此: private void _ScrollViewer_GotFocus(object sender, RoutedEventArgs e) { FrameworkElement element = e.OriginalSource as Fram...
阅读全文
摘要:一、按模块分包一般大型的Silverlight应用,都会按模块分解成多个silverlight project,编译后就有多个xap包,然后在需要用到的场景按需加载。我近期开发的这个项目不需要全站Silverlight,而是aspx混合silverlight,说得更白点,就是把相应的子模块xap包嵌入aspx.这样分包就简单多了:直接用js控制dom元素,修改object元素中的source,动态设置成不同的xap即可实现无刷新的加载不同模块。(这比网上主流的方式:用WebClient动态下载xap包,最终再反射加载,个人觉得更简单。当然,这种方式不适用于整站Silverlight的项目)二、
阅读全文
摘要:项目开发中遇到一个要求,需要将ComboBox右侧中的小三角箭头给去掉,通过Blend工具“编辑ComboBox的模板副本”得知,这是一个名为"BtnArrow"的Path。但是在CS代码中,是无法引用到这个控件的。解决办法:重新定义一个类,继承自ComboBox,然后重写OnApplyTemplate方法,代码如下using System.Windows;using System.Windows.Controls;using System.Windows.Shapes;namespace ContentTemplateTest{ public class YJMCombo
阅读全文
摘要:Blend自带的行为MouseDragElementBehavior应用到ListBox后,如果用鼠标按住列表列拖动,没有任何效果,在多次尝试中意外发现,如果将ListBox的边框设置成一个较大值,在边框上点击时,却可以拖动,但是一般开发中,没人会把ListBox设置一个粗粗的难看边框。于是想到了下面的变通解决办法:当鼠标进入时显示边框,鼠标离开时再隐藏边框。示例代码:Xaml部分<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="ht
阅读全文
摘要:在SL开发中,通常会将项目按模块分成多个xap实现按需下载,但是由于浏览器的缓存,就算某个模块代码修改过并重新发布到服务器,如果这个xap已经在浏览器缓存中,实际加载时,仍然有可能调用的是本地缓存,而非最新的版本。通常解决这个问题的办法是在xap包的下载地址后附加一个随机数,类似http://xxx.com/abc.xap?t=1235817232 之类。但是这样相当于强制浏览器每次去重新下载xap文件,缓存机制被完全给干掉了,特别是对于一些大型项目,xap通常比较大,每次重新下载,需要较长时间,用户的体验非常差。相对比较科学的方法是用"版本号"来替换"随机数&q
阅读全文