2011-04-22 81 views

回答

1

我建議你使用Data-Templating,而不是「通過圖片循環」,這樣就可以完全重複使用XAML。


有一個很好的Kaxaml樣品,展示圖片,DataTemplating:

<Grid> 
    <Grid.Resources> 
     <XmlDataProvider x:Key="flickrdata" Source="http://api.flickr.com/services/feeds/photos_public.gne?tags=flower&amp;lang=en-us&amp;format=rss_200"> 
      <XmlDataProvider.XmlNamespaceManager> 
      <XmlNamespaceMappingCollection> 
       <XmlNamespaceMapping Prefix="media" Uri="http://search.yahoo.com/mrss/"/> 
      </XmlNamespaceMappingCollection> 
      </XmlDataProvider.XmlNamespaceManager> 
     </XmlDataProvider> 
     <DataTemplate x:Key="itemTemplate"> 
      <Image Width="75" Height="75" Source="{Binding Mode=OneWay, XPath=media:thumbnail/@url}"/> 
     </DataTemplate> 
     <ControlTemplate x:Key="controlTemplate" TargetType="{x:Type ItemsControl}"> 
      <WrapPanel IsItemsHost="True" Orientation="Horizontal"/> 
     </ControlTemplate> 
    </Grid.Resources> 
    <ItemsControl 
     Width="375" 
     ItemsSource="{Binding Mode=Default, Source={StaticResource flickrdata}, XPath=/rss/channel/item}" 
     ItemTemplate="{StaticResource itemTemplate}" 
     Template="{StaticResource controlTemplate}"> 
    </ItemsControl> 
</Grid> 

這得到圖像的URL從WEB,但你可以綁定到ObservableCollection<string>持有成像路徑。

+0

我正在循環訪問一系列圖像路徑,並使用bitmapimage打開圖像並創建一個Image控件來分配。圖像列表數總是不同的,你是說數據模板將允許我這樣做? – Terco 2011-04-22 16:22:02

+0

如果您使用正確的收藏,是的。在這種情況下,您應該使用'ObservableCollection ',如果綁定了它並添加了新的圖像路徑,則ItemsControl將在模板正確的情況下自動創建新圖像。 – 2011-04-22 16:29:04

+0

好的。我真的很欣賞這個方向。 – Terco 2011-04-22 19:00:30