0

我有以下代码,其中我在主网格(LayoutRoot)下隐藏了一个 WebView,以便稍后可以制作滑动动画:

<Page...>
    <Grid x:Name="LayoutRoot">
        ...
        <Grid x:Name="ContentRoot">
            ...
        </Grid>
        <WebView...>
            <WebView.RenderTransform>
                <CompositeTransform TranslateY="{Binding ElementName=LayoutRoot, 
                                    Path=ActualHeight}"/> <!--Does not work-->
            </WebView.RenderTransform>
        </WebView> 
    </Grid>
</Page>

当我第一次{Binding ElementName=...}在设计器中输入线条时,WebView 会出现在 Grid 的正下方,就像它应该出现的那样。但是,当我重建解决方案或运行应用程序时,WebView 只会遮盖整个 LayoutRoot。

无论我绑定什么/无论控件是什么,都会发生这种情况;但是,绑定到完全相同的表达式将在设计器和手机中正确显示。为了证明我在说什么:

<Button Width="{Binding ElementName=LayoutRoot, Path=ActualHeight}"> <!--Works perfectly, both on designer and phone-->
    <Button.RenderTransform>
        <CompositeTransform SomeProperty={Binding ElementName=SomeElement, Path=SomePath}"/> <!--This does not work-->
    </Button.RenderTransform>
</Button>

有没有办法绑定到LayoutRoot.ActualHeight为此编写 C# 代码?

4

1 回答 1

1

您遇到的一个问题是您尝试绑定ActualHeight的不是依赖属性也不是 observable ( INotifyPropertyChanged) 属性,因此该绑定仅在首次创建时评估一次。

于 2015-04-01T23:39:23.537 回答