4

我正在尝试制作条形图用户控件。我正在使用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>
4

2 回答 2

5

要回答您的问题,RelativeSource 仅适用于 aControlTemplate它不适用于 a DataTemplate

Silverlight Toolkit 图表控件在创建条形图(或柱形图,因为 Tookit 是指一组垂直条形图)时无法为您工作,是否有原因。

于 2010-05-03T18:59:54.697 回答
0

您是否尝试过 ActualHeight 属性?它应该返回一个值。具有 TemplatedParent 模式的 RelativeSource在数据模板中工作,但它将返回模板化控件/项的内容呈现器,而不是控件/项本身(在控件模板中使用时它会这样做)。要进行实验,请在数据模板中放置一个按钮,并将该绑定表达式(不带路径)分配给其 Tag 属性。处理其 Click 事件,并在事件处理程序中放置一个断点。现在,当您运行项目并单击按钮时,将在您的代码中命中断点,您可以从按钮的 Tag 属性(您可以从 sender 参数中看到)看到它绑定到的对象。希望这可以帮助...

于 2010-05-20T15:48:19.700 回答