我有一个长列表选择器,并且我有一个数据模板作为项目模板,其中包含一个图像。我希望根据模型中的属性更改源。我尝试使用转换器,但无法正常工作。
现在我正在尝试使用触发器。我有:
<Image Name="MovieThumbnail">
<i:Interaction.Triggers>
<ei:DataTrigger Binding="{Binding DataContext.IsCategoryCurrent,ElementName=LayoutRoot}" Value="true">
<ei:ChangePropertyAction TargetObject="{Binding ElementName=MovieThumbnail}" TargetName="Source" Value="{Binding Path=Image120x170}" PropertyName="Source"/>
</ei:DataTrigger>
<ei:DataTrigger Binding="{Binding DataContext.IsCategoryCurrent,ElementName=LayoutRoot}" Value="false">
<ei:ChangePropertyAction TargetObject="{Binding ElementName=MovieThumbnail}" TargetName="Source" Value="{x:Null}" PropertyName="Source"/>
</ei:DataTrigger>
</i:Interaction.Triggers>
</Image>
它几乎可以按照我的意愿工作,只是图像会重复。就像在一部电影中有另一部电影的图片一样。我认为这是因为我按元素名称绑定并且图像控件有多个实例(每个项目一个),但我认为它们看不到对方。任何帮助高度赞赏。
编辑:
经过进一步调查,这似乎是由于长列表选择器造成的。
我先加载了 40 个项目,然后又加载了 40 个,但是第二批 40 个项目从第一批获取图片。如果我提出一个属性更改事件,那么第二批的图片将设置在所有重复的项目上。我不知道为什么会这样。
如果我加载另一个 40 并再次提高 IsCategoryCurrent 上的属性,则第三批的图片将设置 3 次。