【发布时间】:2013-08-20 10:33:56
【问题描述】:
我有一个长列表选择器,并且我有一个数据模板作为项目模板,其中包含一个图像。我希望根据模型中的属性更改源。我尝试使用转换器,但无法正常工作。
现在我正在尝试使用触发器。我有:
<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个item,然后再加载另外40个,但是第二批40个item是从第一批获取图片的。如果我提出一个属性更改事件,那么第二批的图片将设置在所有重复的项目上。我不知道为什么会这样。
如果我加载另一个 40 并再次提高 IsCategoryCurrent 上的属性更改,则第三批的图片将设置 3 次。
【问题讨论】:
标签: image triggers windows-phone-8 longlistselector