【问题标题】:ChangePropertyAction on Image Control in LongListSelector item templateLongListSelector 项目模板中图像控件上的 ChangePropertyAction
【发布时间】: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


    【解决方案1】:

    我设法修复它:

    <Image 
       Grid.RowSpan="2"
       Name="MovieThumbnail" 
       Stretch="Fill"
       Width="130" Height="195"
       HorizontalAlignment="Center"
       VerticalAlignment="Center">
    <i:Interaction.Triggers>
        <ei:DataTrigger Binding="{Binding DataContext.IsCategoryCurrent,ElementName=LayoutRoot}"
                        Value="true">
            <ei:ChangePropertyAction TargetObject="{Binding ElementName=MovieThumbnail}"
                                     TargetName="Source"
                                     PropertyName="Source">
                <ei:ChangePropertyAction.Value>
                    <BitmapImage CreateOptions="BackgroundCreation"
                                 UriSource="{Binding Path=Image120x170}"/>
                </ei:ChangePropertyAction.Value>
            </ei:ChangePropertyAction>
        </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>
    

    我在每次更改时都会引发 IsCategoryCurrent 的属性更改事件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多