【发布时间】:2011-01-23 10:22:29
【问题描述】:
我已经使用基于http://msdn.microsoft.com/en-us/library/ms748859.aspx 的代码为 ListView 实现了自定义视图
在“TileView”中,我将如何设置 ListView 以拉伸每个图块以适应可用空间。即,即使 ListView 改变大小(即保持每个图块始终为 1/3 宽),也恰好适合 ListView 中的 3 列。
<l:PlainView x:Key="tileView" ItemTemplate="{StaticResource centralTile}" />
<DataTemplate x:Key="centralTile">
<StackPanel>
<Grid HorizontalAlignment="Center">
<Image Source="{Binding XPath=@Image}" />
</Grid>
<TextBlock Text="{Binding XPath=@Name}" />
<TextBlock Text="{Binding XPath=@Type}" />
</StackPanel>
</DataTemplate>
编辑:
我已经让 ListView 使用上述方法显示 x 个图块,并在该示例中更改了以下 XAML:
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<WrapPanel Width="{Binding (FrameworkElement.ActualWidth),
RelativeSource={RelativeSource
AncestorType=ScrollContentPresenter}}"
ItemWidth="{Binding (ListView.View).ItemWidth,
RelativeSource={RelativeSource AncestorType=ListView}}"
MinWidth="{Binding (ListView.View).ItemWidth,
RelativeSource={RelativeSource AncestorType=ListView}}"
ItemHeight="{Binding (ListView.View).ItemHeight,
RelativeSource={RelativeSource AncestorType=ListView}}"/>
</ItemsPanelTemplate>
</Setter.Value>
</Setter>
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<UniformGrid Columns="3"/>
</ItemsPanelTemplate>
</Setter.Value>
</Setter>
这正是我需要的,如果 ListView 调整列的大小,列也将调整大小。
现在我需要弄清楚如何动态更改 UniformGrid 列 :)
【问题讨论】:
标签: wpf xaml listview datatemplate