我正在创建一个简单的文件浏览器,它的显示将模仿Windows(7)资源管理器“内容”显示模式。我设想一个ListView控件,其ItemsSource将绑定到FileSystemInfo对象的集合。每个ListViewItems都会显示文件名,最后修改日期/时间等。但是,我还希望它们有一个Expander,当用户点击它时,它将垂直展开以显示文件的内容。
下面是我使用Expression Blend创建的XAML代码。这是我想要ListViewItem的一般模板。但是,扩展器不会导致Border的垂直高度扩展以匹配Expander的Grid内容所需的额外空间(在此示例中,高度为500的ScrollViewer - 显然每个文件可能具有不同的维度,具体取决于内容 - 图像,纯文本等)。
那么,我在这里做错了什么?此外,我想知道ListView控件是否会通过使其Item元素垂直扩展/收缩来正常运行。
这是我希望用于ListItemView的ControlTemplate:
<Border BorderBrush="Black" BorderThickness="1" Background="Beige">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.25*"/>
<ColumnDefinition Width="0.50*"/>
<ColumnDefinition Width="0.25*"/>
</Grid.ColumnDefinitions>
<Image Grid.RowSpan="2"/>
<TextBlock Grid.Column="1" HorizontalAlignment="Left" TextWrapping="Wrap" Text="FileName" d:LayoutOverrides="Height" VerticalAlignment="Center"/>
<TextBlock Grid.Column="1" Grid.Row="1" TextWrapping="Wrap" Text="FileType" d:LayoutOverrides="Width, Height" VerticalAlignment="Center"/>
<TextBlock Grid.Column="2" TextWrapping="Wrap" Text="DateTime Last Modified" VerticalAlignment="Center" d:LayoutOverrides="Width" Grid.RowSpan="2" HorizontalAlignment="Center"/>
<Expander Header="Expander" d:LayoutOverrides="Width" Grid.ColumnSpan="3" Grid.Row="2">
<Grid>
<ScrollViewer Content="File Contents" Height="500"/>
</Grid>
</Expander>
</Grid>
</Border>