程序化WPF绑定失败

时间:2016-10-13 20:29:40

标签: wpf vb.net xaml data-binding

我有一个带有网格的UserControl,我在后面的代码中生成一列矩形。 UserControl有一些依赖属性,我需要将矩形绑定到。我最初在XAML中使用以下标记执行此操作:

<Rectangle Fill="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}, Path=MeterBarColor}"
                   Grid.Row="0"
                   Margin="2,2,2,0" />

这种绑定有效,但我需要动态构建矩形列,所以我尝试在我的代码后面创建一个绑定,如下所示:

Dim oBinding As New Binding("{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}, Path=MeterBarColor}")
oRectangle.SetBinding(Rectangle.FillProperty, oBinding)

当我运行应用程序时,每次绑定尝试都会收到错误,说明找不到该属性。

希望有人可以帮我解决这个问题, SID

1 个答案:

答案 0 :(得分:0)

Binding constructor you use的参数是路径,而不是New Binding("MeterBarColor")表达式。因此,您需要调用RelativeSource,然后设置Dim oBinding As New Binding() { .RelativeSource = New RelativeSource(RelativeSourceMode.FindAncestor, GetType(UserControl), 1), .Path = "MeterBarColor" } oRectangle.SetBinding(Rectangle.FillProperty, oBinding) 属性。

或者您可以使用无参数构造函数和object initializers

{{1}}