Combox使用的一些技巧
??? 這些天做一個(gè)小型的CMS,也就幾張表,用WCF+LINQ2SQL+Silverlight這種方式開發(fā)的,對最常用的控件如DataGrid,DataForm以及Toolkit里其它一些控件的用法有了一定的了解,同時(shí)參照J(rèn)V9的教程,把Silverlight里的驗(yàn)證機(jī)制仔細(xì)的學(xué)習(xí)了一下,前段時(shí)間學(xué)習(xí)的MVVM框架也派上了用場,感覺用MVVM模式后,客戶端的代碼維護(hù)和分層相對簡化了不少。
?? 今天把自己遇到的Combox中問題整理下:
??????????????
?? 關(guān)于項(xiàng)最簡單的方式就是直接的加ComboxItem
ComboBoxItem item = new ComboBoxItem() {Content="財(cái)務(wù)部",IsSelected=true }; this.comboBox.Items.Add(item);?? 用綁定數(shù)據(jù)源的方式則主要就是一個(gè)DisplayMemberPath屬性,
<ComboBox DisplayMemberPath="name" ItemsSource="{Binding}"/> 如果數(shù)據(jù)源是一個(gè)Department集合,那么每一個(gè)Item都是一個(gè)Department,這樣的情況下,只能通過
int deptCode = (this.comboBox.SelectedItem as Departmentt).deptCode;
? 這種方式來獲取數(shù)據(jù)的Value,不過網(wǎng)上有人擴(kuò)展了SelectValuePath的依賴屬性,具體的查看這篇文章ComboBox, 通過這種方式只要綁定到SelectValuePath就可以了 <ComboBox DisplayMemberPath="name" SelectedValuePath="deptCode" ItemsSource="{Binding}"/> int deptId = this.cmBox.SelectedValue; 后臺直接用這個(gè)SelectValue就可以了,比上面的方式方便多了。 在Sliverlight中,用綁定方式可能與直接的硬編碼方式產(chǎn)生的效果不一樣: ComboBox綁定數(shù)據(jù)時(shí),無法將傳給它的值設(shè)為默認(rèn)值,我嘗試了多種方式也沒效果,最后只好采取折衷的辦法, <combo:ComboBoxClassic x:Name="cmBox" DropDownOpened="cmBox_DropDownOpened"/>?? 當(dāng)傳一個(gè)值為“01,財(cái)務(wù)部”給ChildWindow中的ComboBox時(shí),我需要將這個(gè)值顯示在ComboBox上,可以這樣做
this.child.cmBox.Items.Add(new ComboBoxItem { Content=dept.Name,IsSelected=true,Tag=deptId}); 這種方式能夠保證傳過去的值顯示在ComboBox中,因?yàn)槲覀兪墙壎〝?shù)據(jù)源的,所以當(dāng)用戶更改ComboBox內(nèi)容時(shí)可以在DropDownOpen事件里加載記錄 if (this.cmBox.Items.Count == 1) { this.cmBox.Items.Clear(); } this.cmBox.ItemsSource = null; this.cmBox.DisplayMemberPath = "name"; this.cmBox.SelectedValuePath = "deptId"; this.cmBox.ItemsSource =...??? 這種方式很討巧,其實(shí)如果用戶更改ComboBox內(nèi)容較頻繁時(shí),可以把數(shù)據(jù)源放在獨(dú)立存儲(chǔ)中,這樣每次發(fā)生DropDownOpened事件時(shí)就不用從服務(wù)器獲取數(shù)據(jù)
不過我感覺這終究不是好的方式,不知道別人是怎么傳值給ComboBox并顯示在選擇框里的,希望可以請教一下更好的方式。
轉(zhuǎn)載于:https://www.cnblogs.com/626498301/archive/2010/10/22/1858045.html
總結(jié)
以上是生活随笔為你收集整理的Combox使用的一些技巧的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: dhl:mvc用户登陆身份验证
- 下一篇: 很口语blood-aholic
