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