我在 GridViewColumn
中有一个 TextBlock
,它需要一个 DisplayMemberBinding
。 TextBlock
完全不明原因,因为 DisplayMemberBinding
优先于 CellTemplate
。但是,Textblock
有一个 ToolTip
,我希望显示它是特定于列本身的。我能够将大多数样式设置移到 CellTemplate
之外,因为它们对所有列都是通用的,但是 ToolTip
不能移到外面,因为它需要绑定(bind)并且对每个列都是唯一的专栏。
这是其中一列。由于 DisplayMemberBinding
优先,GridViewColumn.CellTemplate
标记中的所有内容都是可移动的。
<GridViewColumn Header="Templates"
Width="200"
DisplayMemberBinding="{Binding Path=Name}>
<GridViewColumn.CellTemplate>
<DataTemplate DataType="{x:Type request:ModelDocument}">
<TextBlock ToolTip="{Binding Name}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
我对其他 Style 属性的处理方式如下。这是在 GridView
之前完成的(GridView
是 ListView
的子级):
<ListView.Resources>
<Style TargetType="TextBlock">
<Setter Property="TextTrimming" Value="CharacterEllipsis" />
<Setter Property="TextWrapping" Value="NoWrap"/>
<Setter Property="FontFamily" Value="Segue UI Light" />
<Setter Property="FontSize" Value="13" />
</Style>
</ListView.Resources>
如何在不删除 DisplayMemberBinding
的情况下向每一列添加唯一的 ToolTip
?
最佳答案
正如@icebat 在评论中已经建议的那样,DataGrid
更适合这种情况,为了澄清这里有一个简单的演示实现:
<DataGrid ItemsSource="{Binding Collection}" AutoGenerateColumns="False">
<DataGrid.Resources>
<Style TargetType="TextBlock" x:Key="TbStyle">
<Setter Property="TextTrimming" Value="CharacterEllipsis" />
<Setter Property="TextWrapping" Value="NoWrap"/>
<Setter Property="FontFamily" Value="Segue UI Light" />
<Setter Property="FontSize" Value="13" />
</Style>
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridTemplateColumn Header="Templates" SortMemberPath="Name"
Width="200" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate >
<TextBlock Style="{StaticResource TbStyle}" ToolTip="{Binding Name}" Text="{Binding Name}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
关于c# - WPF - 使用 DisplayMemberBinding 向 GridViewColumn 添加工具提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58818571/