【问题标题】:Should binding to Path.Data property work?绑定到 Path.Data 属性应该有效吗?
【发布时间】:2011-07-04 15:00:54
【问题描述】:

编辑:注意!原来这是我的代码中的一个错字

According to msdn ,Path.Data 似乎是可绑定的。但我不确定如何阅读 msdn 页面的依赖属性信息部分。 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 属性?在这两种情况下,画笔都是数据绑定的,所以我知道数据上下文设置正确。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 你为什么用第三人称谈论自己?
    • @svick:只是为了它 :)
    • svick 最近的测试似乎表明这可能会让一些人感到困惑 :-)
    • XProperty,X 必须与您绑定的内容相匹配,否则它可能无法按预期工作
    • @anvarbek raupov:不完全正确,CLR-Wrappers 是可选的,您可以使用其注册名称直接绑定到 DependencyProperty,但是如果您不这样做,则应该使用相同的名称注册该属性命名为 CLR 属性,以避免意外绑定到不提供更改通知的 CLR 属性。另外property这个词就不用用了,字段名是完全随意的,称它为???Property只是一种约定。
    猜你喜欢
    • 2016-08-20
    • 2019-09-05
    • 1970-01-01
    • 2012-05-26
    • 1970-01-01
    • 2010-11-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-01
    相关资源
    最近更新 更多