在两个图像之间切换图像源

时间:2013-10-25 13:11:43

标签: c# wpf imagesource

我想在列表中的两个图像之间切换,并根据某些条件更新它们的来源。但是当第二个图像更新时,我希望第一个图像保留最后显示的图像。基本上这里发生的是两者都得到更新,因为源绑定到两者。如何以有效的方式使其正确?

更新:我渲染一个D3DImage,想要叠加两个图像(如图表轴(backImage)和点(targetImage))。根据条件,我更改轴或点图像。

基本上我拥有的是:

List<Image> imageList = new List<Image>();
imageList.Add(backImage);
imageList.Add(targetImage);

if(condition)
   imageList[0].Source = someSource;
else
   imageList[1].Source = someSource;

2 个答案:

答案 0 :(得分:0)

向您的资源添加BitmapImage,如下所示:

   <BitmapImage x:Key="Connected" UriSource="sample.png" />

并更改现有代码以引用图片:

<Image>
    <Image.Style>
      <Style>
    <Style.Triggers>
      <DataTrigger Binding="{Binding Source={x:Static my:Object.Instance}, Path=Connected, Mode=OneWay}"
                   Value="True">
        <Setter Property="Source"
                Value="{StaticResource Connected}"/>
      </DataTrigger>

    </Style.Triggers>
  </Style>
</Image.Style>

答案 1 :(得分:0)

你不能完全按照你的要求行事......你无法更新Image.Source属性,但仍然让Image显示旧图像。但是,您可以使用XAML轻松执行此操作,并Binding轻松执行每个Image.Source的{​​{1}}属性:

在视图模型中添加两​​个属性或实现Image接口的代码:

INotifyPropertyChanged

设置这些属性:

// Don't copy this - implement the `INotifyPropertyChanged` interface properly
public ImageSource ImageSource1 { get; set; } 
public ImageSource ImageSource2 { get; set; }

现在ImageSource1 = ImageSource2 = someSource; Bind控件的Image属性:

<Image Source="{Binding ImageSource1}" />
<Image Source="{Binding ImageSource12}" />

现在您可以将它们分别设置为相同的图像或不同的图像:

ImageSource2 = anotherSource;