0

У меня есть следующий код, в котором я спрятать 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# код для этого?

ответ

0

Одна из проблем заключается в том, что вы пытаетесь связать с ActualHeight, который не является свойством зависимостей и не является наблюдаемым (INotifyPropertyChanged), поэтому привязка оценивается только один раз, когда он впервые создан.

+0

Но почему же другие свойства элемента управления (например, Высота или Ширина) не могут быть привязаны к ActualHeight Grid без проблем? –

+0

Они не должны этого делать. Возможно, их привязки оцениваются после первого прохода макета, в то время как один из них преобразуется. –

+0

ActualHeight ** - свойство зависимости. https://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.actualheightproperty%28v=vs.110%29.aspx –