2010-08-03 7 views
6

Một trong các cột trong số DataGrid của tôi có chứa một Hyperlink trong một TextBlock. Khi một hàng được chọn, siêu liên kết hiển thị màu xanh dương trên màu xanh lam, vì vậy tôi muốn thay đổi màu văn bản thành màu trắng. Làm thế nào tôi có thể làm điều đó?Tạo siêu kết nối bên trong một TextBlock

Các DataGrid trông như thế này:

<DataGrid> 
    <DataGrid.Columns> 
     <DataGridTemplateColumn Header="Title"> 
      <DataGridTemplateColumn.CellTemplate> 
       <DataTemplate> 
        <TextBlock TextWrapping="Wrap"> 
         <Hyperlink NavigateUri="{Binding Url}"> 
          <Run Text="{Binding Title}" /> 
         </Hyperlink> 
        </TextBlock> 
       </DataTemplate> 
      </DataGridTemplateColumn.CellTemplate> 
     </DataGridTemplateColumn> 
    </DataGrid.Columns> 
</DataGrid> 

Tôi đã thử

<Style TargetType="DataGridCell"> 
    <Style.Triggers> 
     <Trigger Property="IsSelected" Value="True"> 
      <Setter Property="TextBlock.Foreground" Value="White" /> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

và cùng mã với TextElement thay vì TextBlock. Cả hai đều làm việc cho các cột khác, nhưng không phải cho cột này với siêu liên kết.

Trả lời

2

Sử dụng tờ khai sau cho liên kết:

<Run Text="{Binding Title}" Foreground="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=DataGridCell},Path=Foreground}"/> 
+0

Điều này làm cho các siêu liên kết màu sắc chính xác khi lựa chọn, nhưng cũng làm cho nó màu đen khi không được chọn và tôi không muốn điều đó. – svick

+0

Mở rộng phong cách của bạn để phù hợp với yêu cầu của bạn – HCL

+0

Heh, điều đó đã không xảy ra với tôi. Vâng, nó hoạt động ngay bây giờ, cảm ơn. Tôi vẫn còn tò mò cho dù có một cách tốt hơn để làm điều đó, mặc dù. – svick