Xaml 当高度为0时,ScrollViewer仍然可见

Xaml 当高度为0时,ScrollViewer仍然可见,xaml,windows-phone-8,Xaml,Windows Phone 8,它很容易复制。只需创建一个新项目并粘贴以下代码: <StackPanel Grid.Row="0" Name="Header" Height="0"> <TextBlock Text="This text is hidden" /> <ScrollViewer> <TextBlock Margin="2" TextWrapping="Wrap" FontSize="32" Text="This text isn't."/&

它很容易复制。只需创建一个新项目并粘贴以下代码:

<StackPanel Grid.Row="0" Name="Header" Height="0">
    <TextBlock Text="This text is hidden" />
    <ScrollViewer>
        <TextBlock Margin="2" TextWrapping="Wrap" FontSize="32" Text="This text isn't."/>
    </ScrollViewer>
</StackPanel>

问题是stact面板高度为0,因此内容应该是不可见的。

我如何修复它?

只是乱搞设置。
通过将
CacheMode=“BitmapCache”
添加到
Stackpanel
中,发现该方法有效。
谷歌搜索了一下,考虑到性能,似乎不建议这样做。

仍然在寻找正确的答案;)

如果要使堆栈面板不可见,请将
可见性设置为
折叠
。或者您希望在某些情况下使ScrollViewer不可见?

当StackPanel的高度变为零时,听起来您试图使ScrollViewer及其内容消失。如果是这种情况,那么只需触发StackPanel的SizeChanged事件,以处理何时应该显示或隐藏Scrollviewer

    private void Header_SizeChanged(object sender, SizeChangedEventArgs e)
    {
        if (Header.Height.Equals(0))
        {
            scroller.Visibility = System.Windows.Visibility.Collapsed;
        }
        else
        {
            scroller.Visibility = System.Windows.Visibility.Visible;
        }
    }

我为StackPanel的高度属性设置了动画。因此,高度从0变为某个值(或从某个值变为0)。但是scrollViewer并没有隐藏。这就是问题所在。