2012-08-07 22 views
5

Tôi muốn áp dụng thuộc tính TextTrimming (CharacterEllipsis) vào văn bản trong các ô WPG DataGrid.Thiết lập TextTrimming (CharacterEllipsis) trong DataGrid's Cell

DataGrid cells without TextTrimming set

tôi áp dụng tùy chỉnh DataGridCell mẫu như trong this answer (mã dưới đây) và nó hoạt động tốt, ngoại trừ cho các cột siêu liên kết như là người đầu tiên trong hình), mà hiện nay có sản phẩm nào.

TextTrimming set on text columns, but hyperling column contents missing

<Style TargetType="DataGridCell"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type DataGridCell}"> 
       <Border Padding="3" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True"> 
        <ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"> 
         <ContentPresenter.ContentTemplate> 
          <DataTemplate> 
           <TextBlock TextTrimming="CharacterEllipsis" Text="{Binding Text}"/> 
          </DataTemplate> 
         </ContentPresenter.ContentTemplate> 
        </ContentPresenter> 
       </Border> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

tôi có thể thấy sự khác biệt trong cả hai loại cột trong cây thị giác: Datagrid row in visual tree (when no custom template is applied)

nhưng không hiểu làm thế nào tôi có thể sử dụng thông tin này để áp dụng TextTrimming vào các cột của cả hai TextBlock của kiểu. Cảm ơn thời gian của bạn;)

Trả lời

6

cuối cùng tôi đã kết thúc với các giải pháp sau đây (giống như một cách giải quyết, nhưng nó hoạt động tốt):

1) Tôi gán một x: Key với phong cách trong câu hỏi và áp dụng nó như là một CellStyle cho tất cả DataGridTextColumns rằng cần phải có các nội dung của họ tỉa và ellipsisized bất cứ khi nào họ không phù hợp với

2) để áp dụng lược cắt tỉa trong DataGridHyperlinkColumns, trong App.xaml tôi thêm phong cách sau đây:

<Style TargetType="{x:Type TextBlock}"> 
    <Setter Property="TextTrimming" Value="CharacterEllipsis"></Setter> 
</Style> 

sẽ áp dụng cho tất cả các TextBlocks được tạo ngầm (như được mô tả trong CodeNaked's answer). Điều này có vẻ hơi quá mức, nhưng tôi không thể thấy sự khác biệt nhiều trong hiệu suất kết xuất và siêu liên kết hiện được cắt xén như mong đợi.

Các vấn đề liên quan