[英]Custom HeaderedContentControl, set header with multibinding
[英]Using MultiBinding when DataGridColum header was customized
我正在自定义ListView的DataGridColumns。
我有很多情况:
1- somtimes,列标题只是一个单词“ Id”,在这种情况下,我使用以下代码:
<GridViewColumn Width="Auto"
DisplayMemberBinding="{Binding Id}"
Header="Id" />
2-有时,列标题由许多单词组成,在这种情况下,我使用带有TextWrapping的TextBlock以多行显示它们:
<GridViewColumn Width="85"
DisplayMemberBinding="{Binding ManyWordsColumnHeader}" >
<GridViewColumnHeader>
<TextBlock Text="Many words column header"
TextWrapping="Wrap" />
</GridViewColumnHeader>
</GridViewColumn>
3-有时,行的内容是Multibinded的(同时具有许多属性),如下所示:
<GridViewColumn Header="Fist name & last name">
<GridViewColumn.CellTemplate>
<DataTemplate DataType="models:PersonClass">
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0} {1}">
<Binding Path="FirstName" />
<Binding Path="LastName" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
如果我的列标题名称由许多单词组成,并且行的内容应与许多属性组合在一起,该怎么办?
换句话说:我想将第二种情况和第三种情况结合在一起!
我还没有真正玩过GridView
,但是这种方法对我来说似乎很合理(以防万一,如果您没有)。 只需将第3点的XAML与第2点结合起来:
<GridViewColumn Width="85" >
<GridViewColumn.CellTemplate>
<DataTemplate DataType="models:PersonClass">
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0} {1}">
<Binding Path="FirstName" />
<Binding Path="LastName" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</DataTemplate>
</GridViewColumn.CellTemplate>
<GridViewColumnHeader>
<TextBlock Text="Many words column header"
TextWrapping="Wrap" />
</GridViewColumnHeader>
</GridViewColumn>
那里有一列带有“ 列标题名称,该列标题名称由许多单词组成,并且行的内容与许多属性绑定在一起 ”。
您在这里有几个选择。
将标题的内容更改为ListView,并将ItemSource设置为字幕行的列表。
添加一个MultiValueConverter
,它从所有绑定中获取所有值,并返回一个由Environment.NewLine分隔的字符串。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.