我正在尝试使条形图用户控件。我正在使用DataTemplate创建每个栏。

问题是为了计算每个条形的高度,我首先需要知道其容器(TemplatedParent)的高度。不幸的是我有:

Height="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Height,  Converter={StaticResource HeightConverter}, Mode=OneWay}"


不起作用。每次将NaN的值返回到我的转换器。 RelativeSource={RelativeSource TemplatedParent}在这种情况下不起作用吗?我还能做些什么以允许我的DataTemplate与正在应用的元素“对话”?

如果这有助于准系统DataTemplate:

<DataTemplate x:Key="BarGraphTemplate">
    <Grid Width="30">
        <Rectangle HorizontalAlignment="Center" Stroke="Black" Width="20" Height="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Height,  Converter={StaticResource HeightConverter}, Mode=OneWay}" VerticalAlignment="Bottom" />
    </Grid>
</DataTemplate>

最佳答案

要回答您的问题,RelativeSource仅在ControlTemplate中有效,而在DataTemplate中无效。

是否存在为什么Silverlight Toolkit Chart控件在创建条形图(或“柱形图”,因为Tookit指的是垂直的条形图)方面对您不起作用的原因。

10-06 14:09