我在有限大小的控件中有一个 TextBlock。如果文本太长无法放入控件中,我想显示一个包含全文的工具提示。这是您肯定从许多应用程序中了解到的经典行为。
我尝试使用转换器将 TextBlock 宽度转换为工具提示的可见性。
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Text}">
<TextBlock.ToolTip>
<ToolTip
DataContext="{TemplateBinding Content}"
Visibility="{Binding Converter={StaticResource visConvert}}">
<TextBlock Text="{Binding Text}"></TextBlock>
</ToolTip>
</TextBlock.ToolTip>
</TextBlock>
</DataTemplate>
</GridViewColumn.CellTemplate>
问题是在转换器中:
public object Convert(object value, ...
'value' 是 DataBound 项。我希望“值”是 TextBlock,观察它的宽度,并将它与 GridViewColumn.Width 进行比较。
最佳答案
我想通了,工具提示具有 PlacementTarget 属性,该属性指定具有工具提示的 UI 元素。如果有人需要它:
<TextBlock Text="{Binding Text}">
<TextBlock.ToolTip>
<ToolTip
DataContext="{Binding Path=PlacementTarget, RelativeSource={x:Static RelativeSource.Self}}"
Visibility="{Binding Converter={StaticResource toolVisConverter}}">
<TextBlock Text="{Binding Text}"/> <!-- tooltip content -->
</ToolTip>
</TextBlock.ToolTip>
</TextBlock>
然后编写一个 Converter 将 TextBlock 转换为 Visibility(基于 TextBlock 宽度)。
关于c# - 如果需要,显示 WPF 工具提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1115924/