代码之家  ›  专栏  ›  技术社区  ›  moswald Jarod42

如何绑定到rowdefinition的高度?

  •  3
  • moswald Jarod42  · 技术社区  · 16 年前

    在这个示例代码中,我试图偏移 Grid Canvas 按其中一行的高度定位。有人看到我可能做错什么了吗?如您所见,我尝试将XAML文件中的绑定移到较低的位置,以防 RowDefinitions 需要先定义。不管怎样,这似乎并不重要,因为 Canvas.Top 总是0。

    <Canvas>
       <Grid Canvas.Top="{Binding ElementName=DetailsRow, Path=ActualHeight}">
          <Grid.RowDefinitions>
             <RowDefinition x:Name="NameRow" />
             <RowDefinition x:Name="DetailsRow" />
          </Grid.RowDefinitions>
          <Button Grid.Row="0">Button</Button>
          <Button Grid.Row="1">Button</Button>
    
          <!-- I expected this to maybe work, but no dice
          <Canvas.Top>
             <Binding ElementName="DetailsRow" Path="ActualHeight" />
          </Canvas.Top>
          -->
    
       </Grid>
    </Canvas>
    
    1 回复  |  直到 13 年前
        1
  •  9
  •   Dave Clemmer manu    13 年前

    ActualHeight 不是依赖属性,因此它可能不会触发任何类型的更改通知。 实际高度 实际上从0开始直到网格被测量,所以这可能是一种解释。不像 FrameworkElement ,这确实定义了 实际高度 作为依赖属性, RowDefinition 不是从 框架元素 只是定义 实际高度 作为没有更改事件的普通属性。

    我实际上已经考虑过这样一个事实,即应该有一个bindingMode.polling选项,在该选项中绑定系统将每隔一定的时间轮询源属性。但不幸的是,您可能会被代码所束缚。