之前WPF/SL用習慣了,現在研究Windows Phone一段時間,發現Windows Phone的SDK中做了許多限制,一些WPF/SL的方法屬性都刪掉了。
今天在Windows Phone項目中用到了DataTemplate,用於Listbox的Items樣式修改,但是測試時突然發現DataTemplate沒有DataType屬性。
如下:
<phone:PhoneApplicationPage.Resources> <DataTemplate x:Key="listDataTemplate"> <StackPanel Orientation="Horizontal"> <TextBlock Text="{Binding UserID}" /> <TextBlock Text=" Name: "/> <TextBlock Text="{Binding UserName}" /> </StackPanel> </DataTemplate></phone:PhoneApplicationPage.Resources>
使用<DataTemplate x:Key="listDataTemplate"> 可以,但是
<DataTemplate DataType="{x:Type local:UserList}">卻沒法用,之前在WPF中完全OK的,難道Windows Phone中把這項去掉了?
查看MSDN和百度,Windows Phone中DataTemplate貌似確實沒有DataType的的屬性,但是沒有詳細的說明,so,google之…(google在天朝被牆的太厲害了,很多網頁打不開,而且速度超慢,殘念…)
終於找到了英文的一些文章,Windows Phone中可能是為了效能和平台緣故,將DataType屬性去掉了,而且更甚的是,DataTemplate中的Trigger也不給支援。
個人認為DataType和Trigger在綁定Itemcontrol的時候非常easy,效能或許會有損失,但是為了些許的損失去掉這麼便捷的寫法,真的值得嗎?
偶爾幾個Control用Key值綁定DataTemplate 還好,但是如果是大量的Control,這樣就非常繁瑣。
OK,Windows Phone中與WPF的區別具體在哪,我們從代碼出發查看一下,請看No DataType in DataTemplate in Windows Phone(二)
<phone:PhoneApplicationPage.Resources> <DataTemplate DataType="{x:Type local:UserList}"> <StackPanel Orientation="Horizontal"> <TextBlock Text="{Binding UserID}" /> <TextBlock Text=" Name: "/> <TextBlock Text="{Binding UserName}" /> </StackPanel> </DataTemplate></phone:PhoneApplicationPage.Resources>