{Binding ElementName=...} не работает ни из какого свойства CompositeTransform
У меня есть следующий код, в котором я скрываю WebView прямо под главной сеткой (LayoutRoot), чтобы я мог сделать скользящую анимацию позже:
<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# для этого?
1 ответ
Одна из ваших проблем - вы пытаетесь связать ActualHeight
который не является ни свойством зависимости, ни наблюдаемым (INotifyPropertyChanged
), поэтому привязка оценивается только один раз при первом создании.