2013-08-20 88 views
2

我有一個長列表選擇器,我有一個datatemplate作爲項目模板,包含圖像。我希望源代碼根據模型中的屬性進行更改。我嘗試了一個轉換器,但我不能讓它工作。LongListSelector項目模板中的圖像控件的ChangePropertyAction

現在我試着用觸發器。我有:

<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批次的圖片將被設置3次。

回答

2

我設法解決它:

<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的屬性更改事件。