Проблема с TextBlock.ActualWidth в Silverlight 2.0 - PullRequest
2 голосов
/ 04 июня 2009

Допустим, у меня есть несколько XAML, как это:

<StackPanel>
    <TextBlock Text="Blah Blah Blah" />
</StackPanel>

В этом случае, как я и ожидал, ширина равна NaN, поскольку она увеличивается с размером StackPanel и явно не устанавливается.

К сожалению, ActualWidth не дает ожидаемых результатов. ActualWidth не привязан к размеру StackPanel. Он привязан к длине отображаемого текста, даже если этот текст превышает размер родительского StackPanel.

Например, если StackPanel.ActualWidth равен 400, а мой текст больше 400, мой TextBlock.ActualWidth может быть 556 (или что-то еще). Кнопка в той же ситуации не ведет себя таким образом.

Это проблема для меня, потому что я пытаюсь реализовать прикрепленное поведение, которое реализует TrimmingText (elipsis в конце, если текст обрезан). Это прекрасно работает, если свойство Width установлено явно, но в более динамическом случае я не могу заставить его работать.

Есть мысли?

Брайан

1 Ответ

1 голос
/ 04 июня 2009

Я не верю, что это такая простая проблема, как может показаться (или, по крайней мере, для меня). В WPF я бы обычно рекомендовал использовать элемент управления DockPanel вместо StackPanel. Для Silverlight проблема усугубляется тем, что не существует элемента управления DockPanel. Мое единственное предложение (которое может работать, а может и не работать) было бы обновить свойство Width TextBlock до свойства ActualWidth родительского StackPanel всякий раз, когда родительский размер изменяется. Не самое элегантное решение, но, к сожалению, оно может потребоваться.

...