WPF数据网格文本省略号不起作用

时间:2010-08-18 08:00:07

标签: .net wpf datagrid ellipsis

我有一个包含很长用户评论的专栏。我使用以下代码加载它......

<my:DataGridTextColumn Header="Message"
                       Binding="{Binding UserMessage, Mode=OneWay}" 
                       CanUserSort="True">
    <my:DataGridTextColumn.ElementStyle>
        <Style TargetType="{x:Type TextBlock}"
               BasedOn="{StaticResource {x:Type TextBlock}}">
               <Setter Property="TextWrapping"
                       Value="NoWrap" />
               <Setter Property="TextTrimming"
                       Value="CharacterEllipsis"/>                                    
               <Setter Property="ToolTip"
                       Value="{Binding Path=UserMessage, Mode=OneWay}"/>
        </Style>
    </my:DataGridTextColumn.ElementStyle>
</my:DataGridTextColumn>

但省略号不起作用。该列继续显示长文本数据。此外,当我明确地将文本块的宽度设置为某个值时,省略号工作正常,但是当我调整列的大小时,它不再显示其中的任何文本。

有没有明星的方法来做到这一点?

THX Vinit Sankhe。

2 个答案:

答案 0 :(得分:5)

尝试在列上设置仅需要静态宽度的宽度。在此列上,您将宽度设置为“*”

<my:DataGridTextColumn Header="Message"
                       Binding="{Binding UserMessage, Mode=OneWay}" 
                       CanUserSort="True"
                       Width="*">
    <my:DataGridTextColumn.ElementStyle>
        <Style TargetType="{x:Type TextBlock}"
               BasedOn="{StaticResource {x:Type TextBlock}}">
               <Setter Property="TextWrapping"
                       Value="NoWrap" />
               <Setter Property="TextTrimming"
                       Value="CharacterEllipsis"/>                                    
               <Setter Property="ToolTip"
                       Value="{Binding Path=UserMessage, Mode=OneWay}"/>
        </Style>
    </my:DataGridTextColumn.ElementStyle>
</my:DataGridTextColumn>

我通过谷歌搜索你的问题找到了你的问题。我拿了你的代码,只是在我的列中添加了宽度(除了“标题”列),并且能够正确地放置省略号。我还添加了一个MinWidth,以确保在调整窗口大小时,列不会被压缩为空。

答案 1 :(得分:0)

看看this article。它认为这是您正在寻找的解决方案: