{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), поэтому привязка оценивается только один раз при первом создании.

Другие вопросы по тегам