Сначала я выложу полный код, а затем объяснение.
<UserControl.Resources>
<Style x:Key="hyperlinkStyle" TargetType="charting:AxisLabel">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="charting:AxisLabel">
<HyperlinkButton Content="{Binding Name}" NavigateUri="{Binding Url}" TargetName="_blank"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</UserControl.Resources>
<charting:Chart>
<charting:Chart.Series>
<charting:ColumnSeries ItemsSource="{Binding Items}" DependentValueBinding="{Binding Value}" IndependentValueBinding="{Binding}">
<charting:ColumnSeries.IndependentAxis>
<charting:CategoryAxis Orientation="X" AxisLabelStyle="{StaticResource hyperlinkStyle}" />
</charting:ColumnSeries.IndependentAxis>
</charting:ColumnSeries>
</charting:Chart.Series>
</charting:Chart>
Хитрость в этой строке:
IndependentValueBinding="{Binding}"
Используя эту привязку, вы передаете целый объект независимой оси, а не просто свойство.
И после этого вы можете получить свойства связанного объекта в шаблоне элемента управления метки:
Content="{Binding Name}" NavigateUri="{Binding Url}"
Ключевое слово Binding
вместо TemplateBinding
выглядит странно, но оно разрешено и работает.
И есть одно замечание: свойство Url
должно содержать префикс http
. Это не работает с www
.