应该绑定到Path.Data属性吗?

时间:2011-07-04 15:00:54

标签: c# .net wpf xaml data-binding

编辑:注意!这在我的代码中是一个拼写错误

According to msdn,Path.Data似乎是可绑定的。但我不知道如何阅读msdn页面的Depenedency Property Information部分。 AffectsRender和AffectsMeasure足以供我使用吗?

如果我使用x:Name直接指定它,则会出现几何图形

var curve = new GeometryGroup();
curve.Children.Add(new LineGeometry(new Point(0, 0), new Point(20, 20)));
curve.Children.Add(new LineGeometry(new Point(0, 20), new Point(20, 0)));
CurveGraph.Data = curve;

这很好用。画出一个漂亮的“X”。

但是,如果我在ViewModel中有一个GeometryGroup类型的依赖项属性

var curve = new GeometryGroup();
curve.Children.Add(new LineGeometry(new Point(0, 0), new Point(20, 20)));
curve.Children.Add(new LineGeometry(new Point(0, 20), new Point(20, 0)));
GeometryData= curve;

dp:

public GeometryGroup GeometryData
    {
        get { return (GeometryGroup)GetValue(GeometryDataProperty); }
        set { SetValue(GeometryDataProperty, value); }
    }

    public static readonly DependencyProperty GeometryDataProperty =  DependencyProperty.Register("GeometryDataProperty", typeof(GeometryGroup), typeof(MiniTrendVm), new UIPropertyMetadata(new GeometryGroup()));

...然后它没有用。什么都没发生。没有“X”。

xaml:

<Path Data="{Binding GeometryData}" x:Name="CurveGraph" Stroke = "{Binding StrokeColor}" StrokeThickness = "2" Grid.RowSpan="4"/> 

这应该有用吗?我胖了什么东西?或者不能以这种方式设置Data属性?在两种情况下都是数据绑定,因此我知道datacontext已正确设置。

1 个答案:

答案 0 :(得分:3)

您的DependencyProperty注册为"GeometryDataProperty",应该是"GeometryData"。不太确定这是否真的破坏了绑定。 编辑 H.B.最近的测试揭示这可能确实是原因。绑定该属性是可能的。