Silverlight Toolkit图表:为Axis分配超链接

时间:2011-03-28 01:03:24

标签: silverlight xaml charts silverlight-toolkit styling

我有一个简单的Silverlight Toolkit Chart,它绑定到以下类型的集合:

public class ChartItemClass
{
    public string Name { get; set; }
    public double Value { get; set; }
    public string Url { get; set; }
}

我可以使用Chart来正确显示Name(X轴)和Value(Y轴),但我希望X轴上的标签是Url属性的HyperlinkBut​​tons。 X轴标签应如下所示:

<HyperlinkButton Content="*Name Property Here*" NavigateUri="*Url Property Here*" TargetName="_blank"></HyperlinkButton>

我找到了一个允许我为X轴设置AxisLabelStyle的示例,因此标签现在是HyperlinkBut​​tons。问题是我无法将Url属性分配/绑定为NavigateUri。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

首先,我将发布完整的代码,然后发布解释。

   <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}"

使用此绑定将整个对象传递给独立轴,而不仅仅是属性。 之后,您可以在label:

的控件模板中获取绑定对象的属性
Content="{Binding Name}" NavigateUri="{Binding Url}"

Binding关键字而不是TemplateBinding看起来很奇怪,但它是允许的并且有效。 有一句话:Url属性必须包含http前缀。它不适用于www