2015-09-01 5 views
0

DoubleAnimation изменяет двойное значение с течением времени. Я хотел бы установить свойство Content для метки для этого значения. Однако это терпит неудачу, потому что WPF не преобразует double в строку.Как я могу анимировать Label.Content с DoubleAnimation?

Должен ли я подклассировать ярлык и добавить новое двойное свойство, связанное с контентом, и позволить DoubleAnimation изменить это новое свойство? Или есть более простой способ?

Двойное значение, о котором идет речь, не ограничено определенными значениями, то есть фиксированные StringKeyframes не могут использоваться.

Пример использования: Таймер обратного отсчета с расширенной точностью, отображающий оставшееся время в ярлыке.

+0

Я уверен, что это довольно глупый вопрос, но я не нашел ответа через полчаса поискового запроса. – mafu

+0

Что значит «оживить»? Просто измените отображаемый текст? Не могли бы вы сделать это, просто привязав «Контент» к вашей собственности? – McGarnagle

+0

@McGarnagle Да, я мог бы - но сначала мне нужно было создать это свойство. Я бы хотел этого избежать. – mafu

ответ

1

Установите ярлык ContentStringFormat="{}{0}" или используйте TextBox и установите StringFormat в текстовом привязке.

+0

Я только что попытался установить ContentStringFormat, но у меня возникли проблемы с его работой. Я использовал: 'lbl.ContentStringFormat =" {} {0} "; lbl.Content = "test"; var anim = new DoubleAnimation (10, 0, TimeSpan.FromSeconds (10)); lbl.BeginAnimation (Label.ContentProperty, anim); ' Это вызывает исключение для AnimationException: Указанное приведение недействительно. Я сделал что-то не так? – mafu

+0

О, хорошо, я думал, что вы делаете это в XAML. Другие правильны, вам нужно создать свойство Double dependency или использовать его в существующем элементе управления. Кстати, почему вы пытаетесь сделать это в коде? Это не WinForms, и, честно говоря, у вас будет мир головной боли, если вы продолжите путь вниз. То, что вы должны делать, это создать модель представления и привязать к ней элементы управления. –

+0

Ах, слишком плохо. Я просто попытался установить все в XAML вместо codebehind, но это не удалось с тем же исключением. Спасибо за подсказку, я все еще изучаю WPF и буду читать. – mafu

Смежные вопросы