C# DataGrid模板列上的文本修剪

C# DataGrid模板列上的文本修剪,c#,wpf,datagrid,hyperlink,C#,Wpf,Datagrid,Hyperlink,我的数据网格中有以下列: <DataGridTemplateColumn CanUserReorder="False" CanUserResize="True" Header=""> <DataGridTemplateColumn.CellEditingTemplate> <DataTemplate /> </DataGrid

我的数据网格中有以下列:

<DataGridTemplateColumn  CanUserReorder="False" CanUserResize="True" Header="">
                    <DataGridTemplateColumn.CellEditingTemplate>
                        <DataTemplate />
                    </DataGridTemplateColumn.CellEditingTemplate>
                    <DataGridTemplateColumn.CellStyle>
                        <Style TargetType="DataGridCell" BasedOn="{StaticResource DatagridCellHyperlinkStyle}">
                            <Setter Property="Template">
                                <Setter.Value>
                                    <ControlTemplate>
                                        <Border Padding="{TemplateBinding Padding}"  VerticalAlignment="Center">
                                            <TextBlock Width="Auto" Height="Auto" TextTrimming="CharacterEllipsis">
                                        <Hyperlink>
                                         <InlineUIContainer TextDecorations="{Binding Path=TextDecorations, RelativeSource={RelativeSource AncestorType=TextBlock}}" Foreground="{Binding Path=Foreground, RelativeSource={RelativeSource AncestorType=TextBlock}}">
                                          <ContentPresenter Width="Auto" Height="Auto" Content="{Binding DataContext.Value, RelativeSource={RelativeSource AncestorType=DataGridRow}}"/>
                                         </InlineUIContainer>
                                            <Hyperlink.Style>
                                                <Style TargetType="Hyperlink" BasedOn="{StaticResource HyperlinkStyle}">
                                                                <EventSetter Event="Hyperlink.Click" Handler="Click" />

                                                    </Style>
                                            </Hyperlink.Style>
                                        </Hyperlink>
                                            </TextBlock>
                                        </Border>
                                    </ControlTemplate>
                                </Setter.Value>
                            </Setter>
                        </Style>
                    </DataGridTemplateColumn.CellStyle>
                </DataGridTemplateColumn>

超链接可以完美地工作(与我的样式也一样),但文本修剪不起作用。如何更改代码以使其正常工作

随附的两种样式:

<Style x:Key="DatagridCellHyperlinkStyle" TargetType="{x:Type DataGridCell}">
    <Setter Property="Padding" Value="5" />
    <Setter Property="BorderBrush" Value="Transparent" />
    <Setter Property="FontSize" Value="14" />
    <Setter Property="FontFamily" Value="Helvetica" />
    <Setter Property="FocusVisualStyle" Value="{x:Null}" />
    <Setter Property="Foreground" Value="{StaticResource CouleurBouton}"/>
    <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="Background" Value="{StaticResource ResourceKey=CouleurBouton}"/>
            <Setter Property="Foreground" Value="{StaticResource ResourceKey=CouleurFond}" />
        </Trigger>
        <Trigger Property="IsSelected" Value="True">
            <Setter Property="Background" Value="{StaticResource ResourceKey=CouleurBouton}"/>
            <Setter Property="Foreground" Value="{StaticResource ResourceKey=CouleurFond}" />
        </Trigger>
        <DataTrigger Binding="{Binding Path=IsMouseOver, RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}}}" Value="True">
            <Setter Property="Background" Value="{StaticResource ResourceKey=CouleurBoutonHover}"/>
            <Setter Property="Foreground" Value="{StaticResource ResourceKey=CouleurTexteBoutonHover}" />
        </DataTrigger>
    </Style.Triggers>
</Style>

<Style x:Key="HyperlinkStyle" TargetType="{x:Type Hyperlink}">
    <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="Foreground" Value="{DynamicResource CouleurBoutonPressed}" />
        </Trigger>
    </Style.Triggers>
    <Setter Property="Foreground" Value="{DynamicResource CouleurBouton}" />
    <Setter Property="TextBlock.TextDecorations" Value="{x:Null}" />
</Style>


谢谢大家!

您没有任何限制
TextBlock.Width
,因此其中的文本将永远不会换行或修剪。要解决此问题,只需对其设置某种
Width
限制。。。您可以尝试以下方法:

<ControlTemplate>
    <Border Padding="{TemplateBinding Padding}"  VerticalAlignment="Center">
        <TextBlock MaxWidth="250" TextTrimming="CharacterEllipsis">
            ...

...

好吧,为了让WPF引擎理解需要修剪,应该看到控件不能放入可用空间。如果控件可以调整大小(自动调整大小),它只会增加其尺寸,而不进行任何修剪

发件人:

获取或设置当内容 溢出内容区域

我在你的模板中看不到任何暗示会遇到空间限制的东西

所以,尝试设置宽度限制,无论是在列上还是在文本块上。或者以其他方式限制调整大小

<TextBlock Width="Auto" Height="Auto" 
           MaxWidth="100"
           MinWidth="30"
           TextTrimming="CharacterEllipsis">