使用ToolTipService.ToolTip无法获得换行符

时间:2014-01-15 15:54:40

标签: c# sql silverlight telerik newline

所以我使用 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 中的所有内容无效。

  • &#x0a;
  • &#x0d;
  • &#x0a;&#x0d;
  • &#10;
  • &#13;
  • &#10;&#13;
  • <br />
  • <LineBreak />
  • \n
  • \r\n

我如何在一个从SQL中提取的绑定字符串中使用换行符或换行符?

3 个答案:

答案 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上, TextBlockImage或其他任何地方。

我最不得不做的是将GridViewColumnGridViewColumn.CellTemplate替换为GridViewColumn.ToolTipTemplate,以便我可以使用其GridViewColumn.CellStyle属性来包装TemplateImage对象中,我将BorderToolTipService.ToolTip属性移动到。

一旦我这样做,工具提示显示当你在单元格的任何部分上空盘旋时,它会尊重放置值并位于单元格的底部,并且换行符保持不变:

ToolTipService.Placement

答案 2 :(得分:0)

我用:

&#x0a; 

表示内联文字的换行符。我可以使用以下命令绑定到带有换行符的文本:

TestText = "Some text \r\n with a line break";
<TextBlock Text="{Binding TestText}" ToolTipService.ToolTip="{Binding TestText}" />

哪个产生了:

enter image description here