我有以下代码,我在主网格(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就会出现在网格下方。但是,当我重建解决方案或运行应用程序时,WebView只是模糊了整个LayoutRoot。
无论我绑定什么/无论控制是什么,都会发生这种情况;但是,绑定到 exact 相同的表达式将在设计器和手机中正确显示。为了证明我在说什么:
<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#代码?
答案 0 :(得分:1)
您遇到的一个问题是您尝试绑定到ActualHeight
,它不是依赖属性,也不是可观察的(INotifyPropertyChanged
)属性,因此绑定仅在首次创建时进行一次计算。 / p>