Pet*_*asi 4 wpf listview gridview gridviewcolumn
我有一组数据,我想以这种方式通过WPF ListView呈现:
Column1 Column2 Column3 --GroupName1-- Item1 part2 part3 Item2 part2 part3 --GroupName2-- Item3 part2 part3 Item4 long_text_in_both_columns Item5 part2 part3 --GroupName1-- Item6 part2 part3 Item7 long_text_in_both_columns --GroupName3-- Item8 part2 part3
我开始使用这个基本示例:http://msdn.microsoft.com/en-us/library/ms771309(VS.90).aspx
上面的Item4和Item7有长文本,我想跨越剩余的列(忽略原始列标题的用途).我怎样才能做到这一点?
我已经使用DataTrigger进行了一些XAML设置,以使用自定义TextBlock替换默认的GridViewRowPresenter,但这并不是我想要的.我需要正常显示第1列中的数据并识别第一列的宽度.
以下是我最终使用正确的ListView解决这个问题的方法:
<ListView.ItemContainerStyle >
<Style TargetType="ListViewItem">
<Style.Triggers>
<DataTrigger Binding="{Binding ShowAcrossColumns}" Value="True">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListViewItem}">
<Grid>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="{Binding ElementName=myListView, Path=View.Columns[0].Width}" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Padding="6,3,6,3" Text="{Binding Column1Text}" />
<TextBlock Grid.Column="1" Padding="6,3,6,3" Text="{Binding ColumnSpanningText}" />
</Grid>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListViewItem}">
<Grid>
<GridViewRowPresenter />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListView.ItemContainerStyle>
Run Code Online (Sandbox Code Playgroud)
关键是DataTriggered模板不使用GridViewRowPresenter,而是假装使用它自己的网格.必须猜测一些填充/边距与GridViewRowPresenter内部使用的匹配.另一个棘手的部分是将内部Grid列绑定到整个ListView列宽度.然后调整列的大小按预期工作.
| 归档时间: |
|
| 查看次数: |
4442 次 |
| 最近记录: |