【发布时间】:2010-08-28 00:32:53
【问题描述】:
我正在尝试在运行良好的屏幕上滚动文本。
更新:我仍然遇到问题,现在可以在我的实时应用上演示它:
- 转到 http://www.pokerdiy.com/poker-blinds-timer.aspx 并将其保留为非全屏。
- 单击顶部的“计时器”选项卡。 然后点击“开始锦标赛”。在 顶部,滚动消息将 从右边出现。在我的显示器上 (22 英寸) - 这在它之前切断 已经说完。
- 然后右键单击以将大小调整为完整 屏幕,然后重新开始比赛和 然后再次启动它以显示相同 信息。你现在会看到它 有效!
这是一个大问题,因为我想在顶部滚动 LONG 消息...请问有什么想法吗?
问题总结:
我在屏幕右侧有一个文本块,它没有设置宽度并且绑定到一个字符串值。我以编程方式启动一个动画,该动画更改 CompositeTransform.TranslateX 上的 From 和 To 值,以在屏幕上移动整个文本块以呈现滚动的外观。此文本块的宽度自动调整为绑定的字符串值,我将其设置为 Animation To 值(负),因此它将其从屏幕左侧移开(参见下面的代码)。
所以这一切都非常有效......但不是长消息。截断我的文本的内容似乎有宽度限制。在某些时候,它会以宽度限制将其切断(最后一个字符呈现为一半,因此它不是字符限制)。我设置了一个循环来创建一个大字符串并输出 Textblock 的 ActualWidth,它显示为 17000(这是正确的)。 Width 也很好,实际的 Text 属性显示了完整的字符串...但是 UI 在某个点截断了它,我无法弄清楚。
所以 - 1) 这种方法是否可行(有更简单的方法吗?)以及 2) 导致截断的原因是什么?
谢谢!
Xaml:-
<Storyboard x:Name="StoryboardScrollText" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)">
<DoubleAnimation x:Name="StoryboardScrollTextAnimation" Storyboard.TargetName="txtSystemMessage" From="500" To="-740" Duration="0:0:30" />
</Storyboard>
<TextBlock x:Name="txtSystemMessage" TextWrapping="NoWrap" Text="{Binding TourneyMessage}" Foreground="White" FontSize="20" VerticalAlignment="Center" >
<TextBlock.RenderTransform>
<CompositeTransform TranslateX="0"/>
</TextBlock.RenderTransform>
</TextBlock>
代码:-
mainPage.StoryboardShowTourneyMessage.Begin();
//has to scroll the whole message off the screen (plus a bit extra as it starts off the screen)
//get the leftmost position of the logo so it starts just behind it
mainPage.StoryboardScrollTextAnimation.From = GetPositionX(mainPage.NavigationGridLogo);
mainPage.StoryboardScrollTextAnimation.To = mainPage.txtSystemMessage.ActualWidth * -1 - 50;
mainPage.StoryboardScrollText.Begin();
MessageBox.Show(mainPage.txtSystemMessage.ActualWidth.ToString() + " " + mainPage.txtSystemMessage.Width.ToString());
【问题讨论】:
标签: silverlight silverlight-4.0