【发布时间】:2011-04-22 16:08:43
【问题描述】:
我在这里找到了如何在 xaml 中执行此操作的一个很好的示例,但我想知道是否有人可以帮助我在代码中使用此示例。我遍历图像并在代码中创建图像控件,我想设置类似于我在下面这个链接中找到的东西,这样我就可以在鼠标悬停时调整图像大小。
Given a WPF Image control, how can I make it bigger through animation on MouseEnter?
【问题讨论】:
我在这里找到了如何在 xaml 中执行此操作的一个很好的示例,但我想知道是否有人可以帮助我在代码中使用此示例。我遍历图像并在代码中创建图像控件,我想设置类似于我在下面这个链接中找到的东西,这样我就可以在鼠标悬停时调整图像大小。
Given a WPF Image control, how can I make it bigger through animation on MouseEnter?
【问题讨论】:
我建议您使用Data-Templating 而不是“循环遍历图像”,这样您就可以完全重用该 XAML。
有一个很好的示例展示了 Image-DataTemplating:
<Grid>
<Grid.Resources>
<XmlDataProvider x:Key="flickrdata" Source="http://api.flickr.com/services/feeds/photos_public.gne?tags=flower&lang=en-us&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>
这会从 WEB 获取图像 url,但您可以绑定到包含图像路径的 ObservableCollection<string>。
【讨论】:
ObservableCollection<string>,如果您绑定到它并添加了新的图像路径,如果模板正确,ItemsControl 将自动创建新图像。