2013-09-10 77 views
0

我有一個ListBox使用我的自定義ItemTemplate。我想根據選定的項目在我的TextBlock(在我的模板中)中設置Visibility屬性。我想用觸發器來做。但是,如果當前項目被選中或沒有被選中,我怎麼能知道我的模板?如何知道ItemTemplate內是否選擇了項目?

<DataTemplate x:Key="myTemplate"> 
    <StackPanel Orientation="Horizontal"> 
     <Image Tag="{Binding priority}" Loaded="SetIconPriority"/> 
     <Image Tag="{Binding alarm}" Loaded="SetIconAlarm"/> 
     <!-- I want this TextBlock to be visible only when item is selected --> 
     <TextBlock Text="{Binding description}"/> 
    </StackPanel> 
</DataTemplate> 

編輯: 它的工作原理,謝謝!代碼:

  <TextBlock Grid.Column="2" Grid.Row="1" Text="{Binding opis}"> 
       <TextBlock.Style> 
        <Style TargetType="TextBlock"> 
         <Style.Triggers> 
          <DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource AncestorType=ListBoxItem}}" Value="False"> 
           <Setter Property="Visibility" Value="Collapsed"/> 
          </DataTrigger> 
         </Style.Triggers> 
        </Style> 
       </TextBlock.Style> 
      </TextBlock> 

回答

2

使用RelativeSourceAncestorTypeListBoxItem結合。

<DataTrigger Binding="{Binding IsSelected, 
           RelativeSource={RelativeSource AncestorType=ListBoxItem}}" 
      Value="True"> 

(可能希望調換邏輯和CollapseFalse代替,避免了默認值Setter

相關問題