2014-07-01 39 views
0

我在我的DataGrid如下柱:文本剪裁上的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> 

超鏈接的作品完美(與我的風格也有),但文字微調不起作用。我如何更改我的代碼以使其工作?附

的2款:

<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> 

謝謝!

回答

1

你沒有任何東西會限制TextBlock.Width,所以其中的文本將永遠不會換行或修剪。要解決這個問題,你只需要設置某種Width限制就可以了...你可以嘗試這樣的事:

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

嗯,WPF引擎理解是需要修整,應該看到,控制權不能投入可用空間。如果可以調整控件的大小(AutoSize),則只會增加其尺寸而不進行任何修剪。

MSDN

獲取或設置文本微調行爲聘請當內容 溢出內容區域

而且我看不到任何在您的模板中,表明會遇到空間限制。

因此,請嘗試設置寬度限制,無論是在列上,還是在TextBlock上。或者以其他方式限制調整大小。

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