通过xaml代码更改图像源?

时间:2010-10-25 09:02:18

标签: .net wpf xaml

如何通过xaml代码连续更改图像源?

2 个答案:

答案 0 :(得分:1)

如果是就地:

<Image Source="smiley_stackpanel.png" Stretch="Fill"/>

如果是风格:

<Style TargetType="Image">
    <Setter Property="Source" Value="c:\asd.jpg" />
</Style>

答案 1 :(得分:0)

这主要来自内存,因此可能存在一个小错误,但基本上,您需要放入两个图像,并为其不透明度值设置动画:

<Grid>

    <Image x:Name="imgOne" Source="image1.png">
        <Image.Triggers>
            <EventTrigger RoutedEvent="Image.Loaded">
                <BeginStoryboard>
                    <Storyboard>
                        <DoubleAnimation
                            Storyboard.TargetName="imgOne"
                            Storyboard.TargetProperty="(Image.Opacity)"
                            To="0" 
                            Duration="0:0:1" 
                            AutoReverse="True"                                
                            RepeatBehavior="Forever" />
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger>
        </Image.Triggers>    
    </Image>
    <Image x:Name="imgTwo" Source="image1.png" Opacity="0">
        <Image.Triggers>
            <EventTrigger RoutedEvent="Image.Loaded">
                <BeginStoryboard>
                    <Storyboard>
                        <DoubleAnimation
                            Storyboard.TargetName="imgTwo"
                            Storyboard.TargetProperty="(Image.Opacity)"
                            To="1" 
                            Duration="0:0:1" 
                            AutoReverse="True"                                
                            RepeatBehavior="Forever" />
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger>
        </Image.Triggers>    
    </Image>


</Grid>

严格地说,你可能不需要第一个动画,除非第二个图像有一些透明区域或者没有完全覆盖第一个动画。

此外,YMMV - 这将是一个资源消耗者,因为它发生得如此迅速和经常。