我有一个带有网格的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
答案 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}}