所以我使用 Silverlight 4 和 Telerik RadGridView 。
我有以下 GridViewColumn :
<telerik:GridViewColumn UniqueName="CreditIssuesText"
CellStyle="{StaticResource rgvCellStyle}"
HeaderCellStyle="{StaticResource rgvHeaderCellStyle}"
HeaderTextAlignment="Center"
TextAlignment="Center"
Width="Auto">
<telerik:GridViewColumn.CellTemplate>
<DataTemplate>
<Image Source="/HubSilverlight;component/Images/status_icon_info.png"
ToolTipService.ToolTip="{Binding CreditIssuesText}"
Visibility="{Binding CreditIssuesText, Converter={StaticResource TextToVisibilityConverter}}"
Width="16"
Height="16" />
</DataTemplate>
</telerik:GridViewColumn.CellTemplate>
</telerik:GridViewColumn>
CreditIssuesText
正在从我们的SQL Server中提取,其中一个函数连接所有可能的信用问题,并将它们与换行符连接在一起,以便在将鼠标悬停在图标上时在工具提示中使用。
我已经尝试过 Newline in string attribute 中的所有内容无效。





<br />
<LineBreak />
\n
\r\n
我如何在一个从SQL中提取的绑定字符串中使用换行符或换行符?
答案 0 :(得分:1)
试试这个...可能会对你的情况有用......不确定。
<Image Source="DefaultImage.png" Width="16" Height="16" >
<Image.ToolTip>
<ToolTip>
<TextBlock MaxWidth="80" TextWrapping="Wrap" Text="{Binding CreditIssuesText}"></TextBlock>
</ToolTip>
</Image.ToolTip>
</Image>
根据您的需要将maxwidth设置为textblock.thank tou !!
答案 1 :(得分:1)
在我们的SQL数据库中,我们将换行符存储为\n
。我不知道为什么或如何,但是在通过我们的WCF服务从SQL检索数据的时间和数据绑定到GridView
的时间之间的某处,工具提示字符串正在被修改。所有\n
换行符都被转义,将其更改为\\n
。
我最终要解决的问题是制作一个简单的转换器,将\\n
替换为Environment.NewLine
:
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var s = string.Empty;
try
{
s = value.ToString().Trim().Replace("\\n", Environment.NewLine);
}
catch
{
// value is most likely null;
}
return s;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
然后,我只需将ToolTipService.ToolTip
的{{1}}属性值更改为:
Image
工具提示仅在您悬停在单元格中的 <Image Source="/HubSilverlight;component/Images/status_icon_info.png"
ToolTipService.ToolTip="{Binding CreditIssuesText, Converter={StaticResource NewLineConverter}}"
Visibility="{Binding CreditIssuesText, Converter={StaticResource TextToVisibilityConverter}}"
Width="16"
Height="16" />
上时显示。当您在任何部分的单元格上悬停时,所需的效果是显示工具提示。
@HeenaPatil's answer 向我指出了解决 问题的正确方向。
解决方案是在Image
属性中使用TextBlock
,我将工具提示文本绑定到GridViewColumn.ToolTipTemplate
属性:
TextBlock.Text
我试图让工具提示显示在单元格的底部,但无论我在哪里放置属性,它都不尊重<telerik:GridViewColumn UniqueName="CreditIssuesText"
CellStyle="{StaticResource rgvCellStyle}"
HeaderCellStyle="{StaticResource rgvHeaderCellStyle}"
HeaderTextAlignment="Center"
TextAlignment="Center"
Width="Auto">
<telerik:GridViewColumn.CellTemplate>
<DataTemplate>
<Image Source="/HubSilverlight;component/Images/status_icon_info.png"
Visibility="{Binding CreditIssuesText, Converter={StaticResource TextToVisibilityConverter}}"
Width="16"
Height="16" />
</DataTemplate>
</telerik:GridViewColumn.CellTemplate>
<telerik:GridViewColumn.ToolTipTemplate>
<DataTemplate>
<TextBlock Text="{Binding CreditIssuesText, Converter={StaticResource NewLineConverter}}" />
</DataTemplate>
</telerik:GridViewColumn.ToolTipTemplate>
</telerik:GridViewColumn>
值,无论它是在ToolTip.Placement
上, TextBlock
,Image
或其他任何地方。
我最不得不做的是将GridViewColumn
和GridViewColumn.CellTemplate
替换为GridViewColumn.ToolTipTemplate
,以便我可以使用其GridViewColumn.CellStyle
属性来包装Template
在Image
对象中,我将Border
和ToolTipService.ToolTip
属性移动到。
一旦我这样做,工具提示显示当你在单元格的任何部分上空盘旋时,它会尊重放置值并位于单元格的底部,并且换行符保持不变:
ToolTipService.Placement
答案 2 :(得分:0)
我用:


表示内联文字的换行符。我可以使用以下命令绑定到带有换行符的文本:
TestText = "Some text \r\n with a line break";
<TextBlock Text="{Binding TestText}" ToolTipService.ToolTip="{Binding TestText}" />
哪个产生了: