Search code examples
c#wpfxamlwpf-controlswpfdatagrid

How change font color of Hyperlink in DataGrid


How can I change the color of Hyperlink link (font) in DataGrid in WPF (C#) ?

For now, my Hyperlink column is presented like this: (XAML)

<DataGridHyperlinkColumn Width="300" Binding="{Binding link}" ContentBinding="{Binding link}" 
                         Header="Link" HeaderStringFormat="Link">
    <DataGridHyperlinkColumn.ElementStyle>
        <Style>                            
            <EventSetter Event="Hyperlink.Click" Handler="DG_Hyperlink_Click"/>                            
        </Style>                        
    </DataGridHyperlinkColumn.ElementStyle>
</DataGridHyperlinkColumn>

Solution

  • Try this

    xaml

     <DataGrid Name="DG1" ItemsSource="{Binding}" AutoGenerateColumns="False" >
        <DataGrid.Columns>
            <DataGridHyperlinkColumn  Header="Email" Binding="{Binding Email}">
                <DataGridHyperlinkColumn.CellStyle>
                    <Style TargetType="DataGridCell">
                        <Setter Property="Background" Value="Transparent"></Setter>
                        <Setter Property="BorderThickness" Value="0"></Setter>
                        <Style.Resources>
                            <Style TargetType="Hyperlink">
                                <Setter Property="Foreground" Value="Chocolate"></Setter>
                                <Style.Triggers>
                                    <EventTrigger RoutedEvent="Hyperlink.Click">
                                        <BeginStoryboard>
                                            <Storyboard>
                                                <ColorAnimation Storyboard.TargetProperty="Foreground.Color" From="Chocolate" To="BlueViolet" Duration="0:0:0.1"></ColorAnimation>
                                            </Storyboard>
                                        </BeginStoryboard>
                                    </EventTrigger>
                                </Style.Triggers>
                            </Style>
                        </Style.Resources>
                    </Style>
                </DataGridHyperlinkColumn.CellStyle>
            </DataGridHyperlinkColumn>
        </DataGrid.Columns>
    </DataGrid>
    

    c# code

       public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();
            ObservableCollection<Customer> custdata = new ObservableCollection<Customer>();
            custdata.Add(new Customer() { Email = new Uri("http://stackoverflow.com/") });
            DG1.ItemsSource = custdata;
        }
    }
    public class Customer
    {
        public Uri Email { get; set; }
    }
    

    Result

    enter image description here

    enter image description here