У меня есть следующий код, в котором я спрятать WebView только под основной сетке (LayoutRoot), так что я могу сделать раздвижную анимацию позже:{Binding ElementName = ...} не работает из любого имущества CompositeTransform
<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.
Это произойдет независимо от того, что я связываю с/независимо от управления; однако привязка к точно такое же выражение будет правильно отображаться в дизайнере и в телефоне. Чтобы продемонстрировать, что я говорю:
<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# код для этого?
Но почему же другие свойства элемента управления (например, Высота или Ширина) не могут быть привязаны к ActualHeight Grid без проблем? –
Они не должны этого делать. Возможно, их привязки оцениваются после первого прохода макета, в то время как один из них преобразуется. –
ActualHeight ** - свойство зависимости. https://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.actualheightproperty%28v=vs.110%29.aspx –