2012-11-06 65 views
0

我正在處理的應用程序從Internet檢索信息,並將其顯示在StackPanel內部的一系列網格中,這些網格嵌套在ScrollViewer中。即使調整大小,TextBlock也不會顯示文本的其餘部分

我的問題是:該應用程序顯示內容的簡短摘要,其思想是點擊內容使網格和TextBlock展開顯示其餘內容,但調整TextBlock的大小並不顯示由於原本太短而被切斷的文本。 TextBlock是在C#代碼中動態創建的。

此外,但不是至關重要的:我不知道如何從TextBlock中獲取完整的所需高度以將其文本更改爲,如果沒有它,我必須將新大小設置爲靜態數字,從我的應用程序的用戶體驗。

謝謝, Jase


更新:這是用於產生將TextBlock的代碼:

this.message = new TextBlock() 
{ 
    VerticalAlignment = VerticalAlignment.Top, 
    TextWrapping = TextWrapping.Wrap, 
    MaxWidth = getWidth() 
}; 
if(post.message != null) { message.Text = post.message; } 

更新2:這是創建的StackPanel代碼( XAML):

<ScrollViewer Grid.Column="1" Style="{StaticResource MainColumn}" VerticalScrollBarVisibility="Auto" SizeChanged="Feed_SizeChanged"> 
    <StackPanel x:Name="Feed"/> 
</ScrollViewer> 

這是在產生親網格:

Post grid = new Post() { Margin = new Thickness(0, 0, 0, 5) }; 
Feed.Children.Add(grid); 
grid.layoutPost(oldCount, count--, post, Feed, this); 

網格的高度在layoutPost方法設置,並且在960x75像素結束,郵政是擴展網格的一類,並且在此定義:

class Post : Windows.UI.Xaml.Controls.Grid 

回答

0

如果您將TextBlock的高度設置爲undefined並將TextWrapping設置爲「自動換行」 - TextBlock應自動增大到適合其文本所需的大小。

您可能遇到的另一個問題是,如果您嘗試將大量這些TextBlocks放入您的ScrollViewer中。這可能表現不佳,因爲您沒有虛擬化您的內容並加載那麼多文本需要大量的CPU處理能力。由於他們使用VirtualizingStackPanel來佈置他們的子元素,通常使用ListBox或ListView對於這些場景來說是更好的選擇。

+0

我還沒有定義TextBlock上的高度,並且包裝設置爲Wrap。我將用我用來生成TextBlock的代碼更新問題。另外,我首先使用了ListView,但是由於我不滿意它如何允許用戶選擇列表項目而改變了它。 – Jase

+0

您可以禁用LV中的選擇。您還需要共享託管TextBlocks的面板的代碼。 –

+0

TextBlocks的容器只是一個高度設置的網格,包含在ScrollViewer的XAML生成的StackPanel中,除默認屬性外沒有任何其他內容。 – Jase

相關問題