2016-02-25 79 views
0

如何將模板設置爲動態創建的列表項目?動態創建列表項目的模板

事情是這樣的:

ListView listView = new ListView(); 
listView.ItemsSource = source.Articles; 
listView.Template = ???; 
listView.IsItemClickEnabled = true; 
listView.ItemClick += OpenArticle_ItemClick; 
listView.SelectionMode = ListViewSelectionMode.None;` 

在XAML我有這樣的:

<Page.Resources> 
    <DataTemplate x:Key="MainItemTemplate" x:DataType="data:Source"> 
     <Grid IsTapEnabled="False"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="auto" /> 
       <ColumnDefinition Width="*" /> 
      </Grid.ColumnDefinitions> 
      <StackPanel Grid.Column="1" Orientation="Vertical" Margin="0, 10, 0, 10"> 
       <TextBlock FontSize="20" Text="{x:Bind Title}" TextWrapping="WrapWholeWords" TextLineBounds="TrimToBaseline" Margin="0, 0, 0, 7" /> 
       <TextBlock FontSize="12" Text="{x:Bind Date, Converter={StaticResource ConverterDateToHumanReadable}}" Opacity="0.4" /> 
       <TextBlock FontSize="16" Text="{x:Bind Content }" Opacity="0.8" /> 
      </StackPanel> 
     </Grid> 
    </DataTemplate> 
</Page.Resources> 

回答

1

listView.ItemTemplate = (DataTemplate) this.Resources["MainItemTemplate"];

哪裏this是頁面。

編輯:

雖然我不知道這是否會與X工作:綁定...

+0

非常感謝。 :) –

1

如果你想創建DataTemplate如果代碼隱藏,你可以使用這個機制:

StringBuilder sb = new StringBuilder(); 


sb.Append("<DataTemplate xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\">"); 
sb.Append("<Grid Width=\"200\" Height=\"100\">"); 
sb.Append("<StackPanel>"); 
sb.Append("<StackPanel Orientation=\"Horizontal\" Margin=\"3,3,0,3\"><TextBlock Text=\"Name:\" Style=\"{StaticResource AppBodyTextStyle}\" Margin=\"0,0,5,0\"/><TextBlock Text=\"{Binding Name}\" Style=\"{StaticResource AppBodyTextStyle}\"/></StackPanel>"); 
sb.Append("<StackPanel Orientation=\"Horizontal\" Margin=\"3,3,0,3\"><TextBlock Text=\"Price:\" Style=\"{StaticResource AppBodyTextStyle}\" Margin=\"0,0,5,0\"/><TextBlock Text=\"{Binding Price}\" Style=\"{StaticResource AppBodyTextStyle}\"/></StackPanel>"); 
sb.Append("<StackPanel Orientation=\"Horizontal\" Margin=\"3,3,0,3\"><TextBlock Text=\"Author:\" Style=\"{StaticResource AppBodyTextStyle}\" Margin=\"0,0,5,0\"/><TextBlock Text=\"{Binding Author}\" Style=\"{StaticResource AppBodyTextStyle}\"/></StackPanel>"); 
sb.Append("</StackPanel>"); 
sb.Append("</Grid>"); 
sb.Append("</DataTemplate>"); 


DataTemplate datatemplate = (DataTemplate)XamlReader.Load(sb.ToString());