日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Silverlight Tips(1)

發布時間:2025/3/13 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Silverlight Tips(1) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

??????? 到年底了,手頭上的任務暫時也告一段落,公司的產品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上顯示的內容

<TextBlock Text="{Binding Path=Name,FallbackValue='無效值'}"/>

????? 當綁定源不存在Name屬性時,TextBlock就會顯示“無效值”。

????? StringFormat與CurrentCulture??

?????? 在SL3中如果要改變顯示字符串的格式只能通過IValueConverter來實現,在SL4 中綁定提供了StringFormat屬性簡化了這部分的工作:

<TextBlock Text="{Binding Path=Data,StringFormat=Now is \{0:G\}}" /> <TextBlock Text="{Binding Path=Data,StringFormat=Now is \{0:yyyy-M-dd\}}" /> <TextBlock Text="{Binding Path=Data,StringFormat='Now is {0:yyyy-M-dd}'}" />

????? StringFormat屬性設置了綁定對象的格式

?????

???? 這里主要是涉及一下多語言的時候StringFomat不能正確的顯示對應的文化格式,首先將情景重現下:

????? 將當前文化與時間綁定到頁面上:

<TextBlock Text="{Binding Path=Data,StringFormat=Now is: \{0:G\}}" /> <TextBlock Text="{Binding Path=Name,StringFormat='CultureInfo Name is: {0}'}" />

??? 這時界面上顯示的結果如下:

???????

??? 可以看到當前文化是zh-CN,現在我們設置另一種文化,這里簡單一點,不必通過語言包的形式,只在aspx頁面上的<object/>里添加culture/uiculture參數即可

<param name="culture" value="zh-TW" />

??? 這時候你會看到頁面顯示如下:

??????

?? 很明顯,盡管系統已經識別了不同的環境,但是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

總結

以上是生活随笔為你收集整理的Silverlight Tips(1)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。