2013-05-16 2 views
0

목록 상자에 관찰 가능 모음에서 동적으로 채워지는 목록 상자 항목이 있는데 목록 상자 항목의 'Selected'이벤트에 상호 작용 트리거를 사용하려고합니다. 관찰 가능한 컬렉션에서 오는 항목에 바인딩 할 수 있도록 작업을 시작합니다.itemtemplate에서 작업을 이벤트에 바인딩

내가 가지고있는 문제는 이벤트 트리거로 'Selected'이벤트에 액세스하는 것처럼 보일 수 있다는 것입니다.

여기에 코드입니다 :

 <ListBox x:Name="AssocitedLayerListControl" Background="Transparent" BorderBrush="Transparent" ItemContainerStyle="{StaticResource ListBoxItemStyle}" 
       ScrollViewer.VerticalScrollBarVisibility="Hidden" ScrollViewer.HorizontalScrollBarVisibility="Auto" 
       VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="10,0,10,0" Padding="0" Height="25" Width="Auto" > 

      <!-- Attribute Table Item Template--> 
      <ListBox.ItemTemplate> 
       <DataTemplate> 
        <ContentControl> 
         <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0"> 
          <TextBlock Text="{Binding Path=Key}" 
            Foreground="#FFFFFFFF" 
            FontSize="10" LineHeight="20" 
            HorizontalAlignment="Left" VerticalAlignment="Center" 
            Margin="5,0,5,0" Padding="0" /> 
          <Button BorderBrush="#FFFFFFFF" BorderThickness="1" Background="#FF000000" 
           HorizontalAlignment="Left" VerticalAlignment="Top" 
           Padding="1" Margin="0,1,0,1" Style="{StaticResource CloseItemStyle}"> 
           <i:Interaction.Triggers> 
            <i:EventTrigger EventName="Click"> 
             <actions:RemoveLayer LayerName="{Binding Path=Key}" TargetGraphicsLayer="{Binding Path=Value}" /> 
            </i:EventTrigger> 
           </i:Interaction.Triggers> 
          </Button> 
         </StackPanel> 
         <i:Interaction.Triggers> 
          <i:EventTrigger EventName="Selected" SourceObject="{Binding RelativeSource={RelativeSource Mode=TemplatedParent, AncestorType=ListBoxItem}}"> 
           <actions:SetGraphicLayerInGrid LayerName="{Binding Path=Key}" TargetGraphicsLayer="{Binding Path=Value}" /> 
          </i:EventTrigger> 
         </i:Interaction.Triggers> 
        </ContentControl> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 

      <ListBox.ItemsPanel> 
       <ItemsPanelTemplate> 
        <StackPanel Orientation="Horizontal"/> 
       </ItemsPanelTemplate> 
      </ListBox.ItemsPanel> 

     </ListBox> 

답변

2

시도가 DataTrigger와 ListBoxItem의의 IsSelected 속성을 듣고 :

xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions" 
... 
<i:Interaction.Triggers> 
    <ei:DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource FindAncestor, AncestorType=ListBoxItem}}" Value="True"> 
     <actions:SetGraphicLayerInGrid LayerName="{Binding Path=Key}" TargetGraphicsLayer="{Binding Path=Value}" /> 
    </ei:DataTrigger> 
</i:Interaction.Triggers> 
+0

나는이 같은이 게시 막이었다 나를 위해 그것을 해결했습니다. 기여 해줘서 고마워. – BrokenRobot

관련 문제