Я делаю это в Telerik RadGridView, но я думаю, что то же самое можно использовать в обычной DataGrid.
Я создаю DataTemplate, содержащий столбец:
var dataTemplate = @"<DataTemplate xmlns=""http://schemas.microsoft.com/client/2007"" xmlns:NimbusControls=""http://schemas.nectar.inf.br/2010/xaml"">
<Border Background=""Transparent"">
<StackPanel Orientation=""Horizontal""
HorizontalAlignment=""Center"">
<Button Command=""{Binding EditCommand}"" CommandParameter=""{Binding}"" />
<Button Style=""{StaticResource GridDeleteButtonStyle}"" />
</StackPanel>
</Border>
</DataTemplate>";
Затем вы добавляете его в сетку, в Telerik я делаю так:
nimbusDataGrid.Columns.Add(new GridViewColumn
{
CellTemplate = (DataTemplate)XamlReader.Load(dataTemplate)
});
Но я думаю, что это легко воспроизвести в DataGrid.
Другой путь - создать команду в объекте, который вы используете в качестве ItemsSource, и создать для него шаблон, который генерирует столбец гиперссылки.
Надеюсь, это поможет.