【问题标题】:Part of text is not shown after animation changes StackPanel location动画更改 StackPanel 位置后,部分文本未显示
【发布时间】:2011-03-08 10:51:21
【问题描述】:

我有一个 windows phone 7 项目,其页面结构如下:

  • 我有一个滚动查看器和一个名为 main stackpanel 的 stackpanel
  • 在主堆栈面板中,我有几个水平方向的堆栈面板
  • 水平堆栈面板有几个文本块,每个文本块包含一个字母

有时水平堆栈面板包含的字母多于手机屏幕的大小。有时我需要显示一组屏幕外的字母。 为了能够显示这些字母,我需要移动堆栈面板,以便这些字母在屏幕上可见。当我完成动画时,移入屏幕的字母根本不可见。

我应该怎么做才能让它可见?

我添加了我的页面的屏幕截图和伪 xaml 来演示结构。我希望这个能帮上忙!

<Grid x:Name="LayoutRoot" Background="Transparent">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>

    <ScrollViewer VerticalScrollBarVisibility="Disabled">
        <StackPanel x:Name="MainStackPanel" Margin="12,0,12,-177" Grid.RowSpan="2" RenderTransformOrigin="0.5,0.5" >
            <StackPanel x:Name="stackPanel" Orientation="Horizontal" Width="580" RenderTransformOrigin="0.5,0.5">
             <StackPanel.RenderTransform>
              <CompositeTransform/>
             </StackPanel.RenderTransform>
                <TextBlock Style="{StaticResource LetterStyle1}" VerticalAlignment="Stretch"><Run Text="e"/></TextBlock>
                <TextBlock Style="{StaticResource LetterStyle1}" VerticalAlignment="Stretch"><Run Text="u"/></TextBlock>
                ... many more textblock each containing a letter 
            </StackPanel>
            <StackPanel Orientation="Horizontal">
                <TextBlock Style="{StaticResource LetterStyle1}" VerticalAlignment="Stretch"><Run Text="e"/></TextBlock>
                <TextBlock Style="{StaticResource LetterStyle1}" VerticalAlignment="Stretch"><Run Text="u"/></TextBlock>
                ... many more textblock each containing a letter 
            </StackPanel>

【问题讨论】:

  • 您是否有机会添加显示您获得的结果的图像?此外,您可能会使用 Silverlight Spy (firstfloorsoftware.com/silverlightspy) 来询问可视化树以查看发生了什么。
  • @Derek,幸运的是我自己解决了这个问题。我会在一秒钟内添加一个答案。感谢您对 Silverlight Spy 工具的建议。
  • @Derek 添加屏幕截图以更好地记录此问题
  • 很高兴您找到了解决方案。

标签: silverlight windows-phone-7 stackpanel


【解决方案1】:

幸运的是,我设法找到了解决方案。问题是一些水平堆栈面板比 MainStackPanel 更宽。

将 MainStackPanel 和 ScrollViewer 更改为与最宽的水平一样宽可以解决问题。

 <ScrollViewer VerticalScrollBarVisibility="Disabled" Margin="0,0,-106,0">
        <StackPanel x:Name="MainStackPanel" Margin="12,0,12,-177" Grid.RowSpan="2" RenderTransformOrigin="0.5,0.5" >

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多