Я пытаюсь прокрутить текст по экрану, который работает хорошо.
Обновление : я все еще сталкиваюсь с проблемой и теперь могу продемонстрировать ее в своем приложении:
- Перейдите на http://www.pokerdiy.com/poker-blinds-timer.aspx и выйдитеэто не полноэкранный режим.
- Нажмите на вкладку «Таймер» вверху.Затем нажмите «Начать турнир».Вверху справа появится прокручиваемое сообщение.На моем мониторе (22 дюйма) - это обрезается до того, как закончено предложение.
- Затем щелкните правой кнопкой мыши, чтобы изменить размер на полный экран, и перезапустите турнир, а затем снова запустите его, чтобы отобразить то же сообщение.Вы увидите, что теперь это работает!
Это большая проблема, поскольку я хочу прокручивать ДЛИННЫЕ сообщения вверху ... есть идеи, пожалуйста?
Краткое описание проблемы:
У меня есть текстовый блок с экрана справа, который не имеет установленной ширины и привязан к строковому значению.Я программно запускаю анимацию, которая изменяет значения From и To в CompositeTransform.TranslateX, чтобы переместить весь текстовый блок по экрану, чтобы создать видимость прокрутки.Ширина этого текстового блока автоматически настраивается на значение связанной строки, и я установил его как значение Анимация (отрицательное), чтобы оно убирало его с экрана влево (см. Код ниже).
Так что все это работаетфантастически ... НО не с длинными сообщениями.Кажется, есть ограничение по ширине для чего-то, что обрезает мой текст.В какой-то момент он обрезает его с ограничением ширины (последний символ визуализируется пополам, так что это не ограничение символа).Я настроил цикл для создания большой строки и вывода ActualWidth текстового блока, и он отображается как 17000 (что правильно).Ширина также хороша, и фактическое свойство Text показывает полную строку ... но пользовательский интерфейс обрезает ее в определенной точке, которую я не могу понять.
Итак - 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());