No DataType in DataTemplate in Windows Phone(二)

來源:互聯網
上載者:User

     上文No DataType in DataTemplate in Windows Phone(—)中我們說到Windows Phone中有些特性被limited,如DataTemplate中的DataType,其實不只DataType,DataTemplate中的Trigger也不被支援。我們這篇文章從實際代碼開始分析。

看WPF的寫法:

<Window.Resources>        <local:Company x:Key="dataCompany" />        <DataTemplate DataType="{x:Type local:User}" >                <StackPanel Orientation="Horizontal"   >              <TextBlock Text="{Binding UserID}" x:Name="userid"/>              <TextBlock Text="  Name: "/>              <TextBlock Text="{Binding UserName}"  />           </StackPanel>              <DataTemplate.Triggers>                <DataTrigger Binding="{Binding UserID}" Value="2">                    <Setter TargetName="userid" Property="Foreground" Value="Red" />                </DataTrigger>            </DataTemplate.Triggers>        </DataTemplate>        <local:Company x:Key="UserList" >            <local:User UserID="1" UserName="pan" />            <local:User UserID="2" UserName="qiao" />            <local:User UserID="3" UserName="zhu" />        </local:Company></Window.Resources>

ListBox綁定代碼如下:
<ListBox Height="193" HorizontalAlignment="Left" Margin="49,81,0,0" Name="listBox1" VerticalAlignment="Top" Width="181" ItemsSource="{StaticResource UserList}" />我們看到ListBox中沒有使用ItemTemplate去綁定DataTemplate,而結果卻按我們要求的正常顯示,1.
  注意:<DataTemplate DataType="{x:Type local:User}" > 此處要綁定的是User類而不是Company ,否則會顯示錯誤,只顯示類名。

圖1.

 

而在Windows Phone中DataTemplate 是沒有DataType的,也沒有Trigger屬性。OK,那我們如果想讓調用User類作Items控制項的Item時,想像WPF那樣讓它自動綁定怎麼辦呢?難道必須每個DataTemplate都要定義一個x:Key,然後每個ItemsCrontrol做一下綁定?

 

先看Windows Phone中的DataTemplate:

        <DataTemplate x:Key="listDataTemplate">            <StackPanel Orientation="Horizontal">                <TextBlock Text="{Binding UserID}" />                <TextBlock Text="  Name: "/>                <TextBlock Text="{Binding UserName}" />            </StackPanel>        </DataTemplate>

ListBox綁定語句: ---此處綁定的是上級的DataContext

<ListBox ItemTemplate="{StaticResource listDataTemplate}"  Height="296" HorizontalAlignment="Left" Margin="39,86,0,0" Name="listBox1" VerticalAlignment="Top" Width="251" ItemsSource="{Binding}"  />
 
關於實現Windows Phone中實現DataType類似的綁定的辦法,見
Applying Data Templates Dynamically by Type in WP7By  Florin Badea一文,英文的,Badea講解的很詳細及解決辦法

 


 

 

 

 

 
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.