Ну вот вам пример:
<ListView ItemsSource="{Binding ...}">
<ListView.ItemTemplate>
<DataTemplate DataType="{x:Type l:ItemVM}">
<Grid>
<!-- шаблон для обычного состояния -->
<TextBlock Text="{Binding BasicInfo}" Name="BasicInfoPart"/>
<!-- шаблон для развёрнутого состояния -->
<StackPanel Visibility="Collapsed" Name="AdvancedInfoPart">
<TextBlock Text="{Binding BasicInfo}"/>
<TextBlock Text="{Binding AdvancedInfo}"/>
</StackPanel>
</Grid>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding IsSelected,
RelativeSource={RelativeSource FindAncestor,
AncestorType=ListViewItem}}"
Value="True">
<Setter Property="Visibility" TargetName="BasicInfoPart"
Value="Collapsed"/>
<Setter Property="Visibility" TargetName="AdvancedInfoPart"
Value="Visible"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
У меня работает:

Обновление
Смотрите. У вас есть VM-тип, правильно? У меня он называется ItemVM
, у вас как-то по-другому. Для того, чтобы мне сослаться на ItemVM
, я должен указать, в каком namespace'е он находится. Для этого делается так:
<Window x:Class="ExpandableListView.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:l="clr-namespace:ExpandableListView"
Title="..." Height="350" Width="525">
Таким образом l
определяется как namespace ExpandableListView
в текущем assembly. (Вот полный код: http://pastebin.com/LM0a0B0a.) у вас, понятно, другой namespace, да и ItemVM
наверное называется по-другому.
Да, важный вопрос: вы знакомы с MVVM?