2009-06-04 35 views
2

可以說我有一些XAML這樣的:問題與TextBlock.ActualWidth在Silverlight 2.0

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

在這種情況下,寬度爲NaN,如我所料,因爲它的增長與StackPanel中的大小和沒有明確設置。

不幸的是,ActualWidth並沒有給我我期望的結果。 ActualWidth不受StackPanel大小的限制。它被綁定到渲染文本的長度,即使該文本超過父級StackPanel的大小。例如,如果StackPanel.ActualWidth是400,並且我的文本大於400,那麼TextBlock.ActualWidth可能是556(或其他)。在相同情況下的按鈕不會這樣。

這對我來說是個問題,因爲我試圖實現一個實現TrimmingText的附加行爲(如果文本被裁剪,最後使用elipsis)。如果Width屬性被明確設置,它會很好用,但是在更動態的情況下,我無法讓它工作。

有什麼想法?

布賴恩

回答

1

我不相信這是因爲它可能會出現(或至少對我做了)這樣一個簡單的問題。在WPF中,我通常會推薦使用DockPanel控件而不是StackPanel。對於Silverlight,由於不存在DockPanel控件這一事實,問題更加惡化。我的一個建議(可以或不可以)將更新TextBlockWidth屬性爲父母StackPanelActualWidth屬性,只要父母更改大小。不是最優雅的解決方案,但它可能不幸是必需的。

+0

是的,這是關於我能做的最好的。我的行爲要求設置寬度屬性。如果該行爲的用戶將TextBlock放入更改該寬度的容器中,則當容器大小更改爲容器的ActualWidth時,他們將不得不修改Width屬性。有點不高興,但它有效。 – 2009-06-04 19:18:54