2012-07-03 24 views
0

我有一個列表框,我需要重複所有列表框項目的樣式。只有佔位符纔會改變。例如,以下列表框項目包含三個元素 - 圖像,標題文本和說明文本。我已經設計了它。現在我需要爲我遵循的listboxitems應用相同的樣式。目前,我正在爲所有不正確的方式進行復制粘貼。如何在Silverlight/Windows Phone 7中統一重複列表框的樣式

enter image description here

我可以通過ListBoxTemplate和DataTemplate中做到這一點,但我需要寫在cs文件的代碼,我不想。幫助我如何實現模板效果?

這裏是上述listboxitem的代碼。

<ListBoxItem> 
    <Grid Height="80"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="80"/> 
      <ColumnDefinition Width="*"/> 
     </Grid.ColumnDefinitions> 
     <Image Grid.Column="0" Source="/Images/dark/appbar.magnify.png"/> 
     <StackPanel Grid.Column="1"> 
      <TextBlock Text="Item heading" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/> 
      <TextBlock Text="item description" TextWrapping="Wrap" Style="{StaticResource PhoneTextSubtleStyle}"/> 
     </StackPanel> 
    </Grid> 
</ListBoxItem> 

我需要在所添加的所有listboxitems中的圖像,標題文本和內容文本的佔位符。如何實現這一目標?

+0

爲什麼您必須將dataTemplate放入.cs文件中? DataTemplates作爲資源在XAML中生活得非常好。 – MBen

+0

@MBen:是嗎?我不知道那個。讓我挖。你可以指點我的任何例子? – bragboy

+0

查看我的回答 – MBen

回答

2

這是如何可以實現它:

<Page.Resources> 
    <DataTemplate x:Key="ListTemplate"> 
     <Grid Height="80"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="80"/> 
       <ColumnDefinition Width="*"/> 
      </Grid.ColumnDefinitions> 
      <Image Grid.Column="0" Source="/Images/dark/appbar.magnify.png"/> 
      <StackPanel Grid.Column="1"> 
       <TextBlock Text="{Binding ItemHeading}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/> 
       <TextBlock Text="{Binding ItemDescription}" TextWrapping="Wrap" Style="{StaticResource PhoneTextSubtleStyle}"/> 
      </StackPanel> 
     </Grid> 
    </DataTemplate> 
</Page.Resources> 
<Grid> 
    <ListBox ItemTemplate="{StaticResource ListTemplate}" ItemsSource="{Binding YourList}"> 


    </ListBox> 
</Grid> 

你可以把資源在App.xaml中,因此它可以被所有頁面進行訪問,您可以在您的應用程序的所有ListBox上使用它。請注意,您的YourList元素應該有ItemHeaderItemDescription性能

+0

謝謝。如何在應用模板之後將值(圖像源,內容標題和說明)掛接到listboxitems? – bragboy

+0

圖像對所有人來說都是一樣的,其餘的只是使用普通的綁定。 WPF會從Source列表的DataContext中找到它。我會更新我的代碼。 – MBen

+0

再次感謝您的評論。但是我最終會把你的清單從cs文件中傳遞出來? – bragboy

0

您可以創建這樣

<DataTemplate x:Key="DataTemplate1"> 
      <Grid> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="auto"/> 
        <ColumnDefinition Width="auto"/> 
        <ColumnDefinition Width="auto"/> 
       </Grid.ColumnDefinitions> 
       <Image Grid.Column="0" Source="{Binding Image}" Width="10" Height="10"/> 
       <TextBlock Grid.Column="1" Text="{Binding ID}"/> 
       <TextBlock Grid.Column="2" Text="{Binding content}"/> 
      </Grid> 
     </DataTemplate> 

一個DataItem的模板,然後這個數據模板綁定到列表,然後綁定項目列表.. :) ü可以綁定與類的列表集合

您可以創建一個具有三個變量圖像,id和內容的類,以便您可以創建該類的列表並綁定到列表中

相關問題