Вы уверены, что команда связана с гиперссылкой? Я попытался настроить это в примере приложения, и команда не была связана с гиперссылкой (если вы вернете false из CanExecute
, вы сможете быстро определить, подключена ли она).
Вместо этого я создал DataGridTemplateColumn
для этого:
<DataGridTemplateColumn Header="Client Name">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock>
<Hyperlink Command="{Binding DataContext.NavigateToClientCommand, RelativeSource={RelativeSource AncestorType={x:Type local:ClientsSummaryView}}}"
CommandParameter="{Binding ShortName}">
<TextBlock Text="{Binding ShortName}" />
</Hyperlink>
</TextBlock>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
Это очень раздражает, если вам придется создавать несколько столбцов. После взлома Toolkit с помощью Reflector, похоже, он поддерживает парадигму TargetName
/ NavigationUrl
для использования гиперссылки.
Если у вас есть сценарий, в котором вам потребуется столбец такого типа во многих местах, я бы предложил расширить DataGridHyperlinkColumn
и добавить свойство Command. Затем вы можете изменить элемент, возвращенный из GenerateElement
, чтобы он использовал вашу команду.