绑定RectangleGeometry.Rect不显示矩形

时间:2010-07-22 02:05:47

标签: wpf data-binding

我在尝试绑定到RectangleGeometry的Rect属性时遇到问题。这里的基本思想是我试图绑定剪辑蒙版来控制伪图表对象的可视化高度。这是XAML:

  <Path x:Name="_value" Fill="{DynamicResource PositiveColorBrush}" Data="F1 M10,55 C10,57.75 7.75,60 5,60 2.25,60 0,57.75 0,55 L0,5 C0,2.25 2.25,0 5,0 7.75,0 10,2.25 10,5 L10,55 z">
     <Path.Clip>
        <!-- SECOND NUMBER CONTROLS THE HEIGHT : SCALE OF 0-60 REVERSED -->
        <!--<RectangleGeometry Rect="0,22.82,10,60"/>-->
        <RectangleGeometry 
           Rect="{Binding Score, Converter={StaticResource ChartBarScoreConverter}}" />
     </Path.Clip>
  </Path>

注意那里注释的RectangleGeometry。当我取消注释并注释掉绑定的RectangleGeometry时,这非常有效。当然,当分数发生变化时,它不会改变大小。

现在,如果我在ChartBarScoreConverter中放置一个断点,我会得到正确的值,并返回一个新的RectangleGeometry对象,该对象具有与注释掉的完全相同的规格。这是转换器的简短代码:

  ...
  public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
  {
     RectangleGeometry output = new RectangleGeometry();
     double score = 60; //0
     if (Common.IsNumeric(value))
     {
        score = System.Convert.ToDouble(value) * .60;//scale is 0-60
        score = 60 - score;//reversed (=
     }
     output.Rect = new Rect(0, score, 10, 60);
     return output;
  }
  ...

当应用程序运行时,它根本不显示剪辑。正如我所说的,我在转换器中放置了一个断点,并验证它已被调用,并且返回了正确大小的对象......但它只是没有出现在视图中。

有什么想法吗?

谢谢, 保罗

1 个答案:

答案 0 :(得分:2)

您的转换器返回一个RectangleGeometry,然后您尝试将其分配给RectangleGeometry上Rect类型的Rect属性。摆脱转换器中的“输出”对象,只返回Rect本身。