任何人都可以向我指出如何在Silverlight中加载图像“淡入”的资源吗?基本上我有一个从Web服务返回的项目列表框,有时候图像需要更长的时间来加载,所以我想在下载时淡入它们。我读到我可能需要一个故事板来实现这种效果。这是最好的路线还是有替代方案?
答案 0 :(得分:2)
我不知道有任何其他选择。 StoryBoard是最好的路线。您可以将图像的不透明度从0设置为100。
将Storyboard放在UserControl()或App.xaml的资源中。
然后在你的OnOpened事件中(正如你在评论中提到的那样):
protected void OnOpened(object sender, EventArgs e)
{
// params might be incorrect
this.fadeInStoryBoard.Stop();
// your image controls will need x:names set
this.fadeInAnimation.SetValue(Storyboard.TargetNameProperty, ((Image)sender).Name);
this.fadeInStoryBoard.Start();
}
示例故事板来自: http://www.codeproject.com/KB/silverlight/AgDynAnimations.aspx 并启动故事板:http://blogs.msdn.com/b/silverlight_sdk/archive/2008/03/26/target-multiple-objects-properties-with-one-animation-silverlight.aspx
答案 1 :(得分:2)
这是执行任务的实用程序功能
private void FadeIn(UIElement uilelement)
{
uilelement.Opacity = 0.0;
uilelement.Visibility = Visibility = Visibility.Visible;
var timeline = new DoubleAnimation() { To = 1.0, Duration =TimeSpan.FromSeconds(3.0) };
Storyboard.SetTarget(timeline, uilelement);
Storyboard.SetTargetProperty(timeline, new PropertyPath(UIElement.OpacityProperty));
var sb = new Storyboard();
sb.Children.Add(timeline);
sb.Begin();
}
function void image1_Opened(object sender, EventArgs e)
{
FadeIn(sender as Image);
}
您应将图像设置为折叠,或将其初始不透明度设置为0.
<Image Source="{Binding ImagePath}"
Name="image1"
Visibility="Collapsed"
ImageOpened="image1_ImageOpened" />