博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Silverlight Tips(1)
阅读量:5277 次
发布时间:2019-06-14

本文共 2451 字,大约阅读时间需要 8 分钟。

        到年底了,手头上的任务暂时也告一段落,公司的产品Web端最近升级到了SL4,终于可以完全脱离了用VS08开发时没有可视化设计器所受到的折磨。

利用年前这几天空闲时间,将平时遇到的问题和在网络上看到的整理整理,就算是对知识的整合吧。

       DataPicker的水印处理

       

      如果你想改变这里水印的内容,或许这并不是太容易实现的,在DatePicker控件内容有一个类型为DatePickerTextBox的部件公开了一个Watermark属性

 
[TemplatePart(Name = "TextBox", Type = typeof (DatePickerTextBox))]
public class DatePicker : Control

     那么改变这个水印最容易的方式,就是从继承DataPicker继承,并重写OnApplyTemplate()即可

 
public class MyDatePicker:DatePicker {
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
DatePickerTextBox datePickerTextBox = base.GetTemplateChild("TextBox")
as DatePickerTextBox;
datePickerTextBox.Watermark = "选择日期...";
} }

      把这个控件放到页面中,你会看到这样的效果

          

     如果你想根据设置DatePicker格式提示用户输入,可以简单的改变下上面的代码

 
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
DatePickerTextBox datePickerTextBox = base.GetTemplateChild("TextBox")
as DatePickerTextBox;
string formatString = String.Empty;
if (this.SelectedDateFormat == DatePickerFormat.Short)
formatString = "mm/d/yyyy";
if(this.SelectedDateFormat == DatePickerFormat.Long)
formatString = "dddd,MMMM,dd,yyyy";
datePickerTextBox.Watermark = "请输入:(" +formatString+")";
}

     这时候效果图是这样的:

            

    不过用上面这种方式,只能保证第一次显示这样的效果,换言之,当你输入一个值并删除它时,水印信息将显示原来的值。

     FallbackValue属性

     在sl4中,Bind添加了多个属性,FallbackValue是用来设定当绑定的字段不存在时,UI上显示的内容

 

      当绑定源不存在Name属性时,TextBlock就会显示“无效值”。

      StringFormat与CurrentCulture  

       在SL3中如果要改变显示字符串的格式只能通过IValueConverter来实现,在SL4 中绑定提供了StringFormat属性简化了这部分的工作:

 

      StringFormat属性设置了绑定对象的格式

     

     这里主要是涉及一下多语言的时候StringFomat不能正确的显示对应的文化格式,首先将情景重现下:

      将当前文化与时间绑定到页面上:

 

    这时界面上显示的结果如下:

       

    可以看到当前文化是zh-CN,现在我们设置另一种文化,这里简单一点,不必通过语言包的形式,只在aspx页面上的<object/>里添加culture/uiculture参数即可

 

    这时候你会看到页面显示如下:

      

   很明显,尽管系统已经识别了不同的环境,但是StringFormat并没有显示的出相应的时间格式

   这里通过在页面构造函数中添加如下代码:

 
this.Language = XmlLanguage.GetLanguage(Thread.CurrentThread.CurrentCulture.Name);

     代码就是将当前文化设置为UI语言,这时你看到的页面将会是这样的:

  

   明显的,这时候StringFormat可以自动的改变格式了。

   在网上还看到另一种更简便的方式,直接在xmal的根元素中设置xml:lang=”zh-TW”,StringFormat会自动的适应格式,不过这种方式不好,

毕竟实际情况中不会用这种方式设置多语言化。

    ComboBox选中项

      ComboBox有一个IsSelected属性来设置选中项,不过在动态添加项的时候,通过设置IsSelected是无效的

 
ComboBoxItem comboBoxItem;
for (int i = 0; i < 5; i++)
{
comboBoxItem=new ComboBoxItem();
comboBoxItem.Content = "Item" + i;
this.comboBox1.Items.Add(comboBoxItem);
}
if(comboBox1.Items.Count>0)
{
comboBoxItem = comboBox1.Items[0] as ComboBoxItem;
comboBoxItem.IsSelected = true;
}

       你会发现ComboBox上并没有显示第一项,其实解决这个问题很简单

 
if(comboBox1.Items.Count>0)
{
comboBox1.SelectedIndex = 0;
}

转载于:https://www.cnblogs.com/626498301/archive/2011/01/21/1940785.html

你可能感兴趣的文章
vue项目中开启Eslint碰到的一些问题及其规范
查看>>
循环队列实现
查看>>
获取表单提交的数据getParameter()方法
查看>>
CSS层模型
查看>>
springBoot 项目 jar/war打包 并运行
查看>>
ZOJ3772_Calculate the Function
查看>>
如何快速学习
查看>>
第四次Scrum编码冲刺
查看>>
异构并行编程(CUDA)结课证书
查看>>
用setTimeout实现setInterval的功能
查看>>
VSCode 启动 Vue 项目 npm install 报错
查看>>
HDU 1501 Zipper
查看>>
打包java程序生成exe
查看>>
八叉树
查看>>
函数的返回是返回给实参,然后由实参输出,返回值的作用是给输出的全部变为变量然后用.=连接好把变量存进数据库而不是输出完屏幕就拉倒了...
查看>>
教你禁用右键,也教你如何破解
查看>>
[ActionScript 3.0] 对数组中的元素进行排序Array.sort()的方法
查看>>
[工作积累] shadow map问题汇总
查看>>
H3C交换机和路由器的命名规范
查看>>
【Asp.Net】:如何处理大量页面的身份验证跳转
查看>>