2009-11-24 99 views
0

我想使用ItemsControl來顯示一個DataTemplate。我有這個簡單的例子:Silverlight ItemsControl

<navigation:Page.Resources> 
    <DataTemplate x:Key="PictureResultsTemplate"> 
     <!--<Grid/> --> 
     <TextBlock Text="Nick Was Here"></TextBlock> 
    </DataTemplate> 
</navigation:Page.Resources>  


<Grid x:Name="LayoutRoot"> 
    <Grid Margin="0,0,8,8"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="0.102*"/> 
      <RowDefinition Height="0.898*"/> 
     </Grid.RowDefinitions> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="Auto"/> 
      <ColumnDefinition Width="*"/> 
     </Grid.ColumnDefinitions> 

    <ItemsControl x:Name="PictureResults" Margin="0,8,0,0" Grid.Row="2" ItemTemplate="{StaticResource PictureResultsTemplate}"> 
    </ItemsControl>  

    </Grid>   

</Grid> 

爲什麼文本塊文本不可見?謝謝!

回答

1

我認爲你將需要設置項目控件上的ItemsSource或Items,否則你將沒有項目應用你的ItemTemplate。

不,您不必綁定到數據源。您可以直接在xaml中添加項目。見下:

<UserControl 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     x:Class="QuickTests.MainPage" 
     xmlns:System="clr-namespace:System;assembly=mscorlib" 
     Width="640" Height="480"> 
    <UserControl.Resources> 
     <DataTemplate x:Key="myStringTemplate"> 
      <StackPanel> 
       <TextBlock Text="{Binding}"/> 
       <TextBlock Text="Yep, this is an item"/> 
      </StackPanel> 
     </DataTemplate> 
    </UserControl.Resources> 
        <ItemsControl ItemTemplate="{StaticResource myStringTemplate}"> 
         <ItemsControl.Items> 
          <System:String>hello</System:String> 
          <System:String>world</System:String> 
         </ItemsControl.Items> 
        </ItemsControl> 
    </UserControl> 
+0

你是說我必須將它綁定到數據源?你如何有一個用於標籤的文本塊呢? – Nick

+0

@Nick:您的模板可以包含具有一些靜態文本作爲標籤的文本塊。但是,對於要創建的模板實例,項目控件需要綁定到至少包含一個項目的集合。 – AnthonyWJones

相關問題