2011-06-07 109 views
0

如果網格中有TextBlock,設置其寬度和高度的最佳方式是什麼(性能明智)?設置TextBlock與網格的寬度

在TextBlock的屬性中設置它們會比將其設置爲Grid的屬性更好嗎?

基本上是我問的是下列哪一個更好:

<Grid Width="200" Height="200"> 
    <TextBlock /> 
</Grid> 

VS

<Grid> 
    <TextBlock Width="200" Height="200"/> 
</Grid> 
+0

你可以詳細說明你的意思嗎*設置爲網格屬性*? – slugster 2011-06-07 01:23:21

+0

我添加了一些代碼來詳細說明我的問題 – dnr3 2011-06-07 02:40:56

回答

0
<Grid Width="200" Height="200"> 
    <TextBlock /> 
</Grid> 

單純使用網格來約束TextBox並不是真正的設置TextBox寬度的好方法。網格更適合佈置多個控件。然而,這是完全可以接受的:

<Grid Width="200" Height="200"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="200" /> 
     <ColumnDefinition Width="1*" /> 
     <ColumnDefinition Width="*" /> 
    </Grid.ColumnDefinitions> 

    <TextBlock Grid.Column="1" HorizontalAlignment="Stretch" Margin="5,0" /> 
</Grid> 

這跟@Ahmed建議的一樣。

通常對於XAML佈局,建議使用比例佈局而不是固定大小,以便您的UI可以通過任何代碼進行最小程度的忽略而正確調整大小。這意味着讓父元素儘可能地指定尺寸是很好的,只有在必要時才使用固定尺寸。 (設置MinWidth/MaxWidth /等很好,只是儘量避免明確地設置寬度在可能的情況下,同樣適用於高度屬性)。

+0

〜單純使用Grid來約束TextBox並不是真正的設置TextBox寬度的好方法。我明白,網格更多的是佈置兒童元素,但對於性能方面,最好是在網格中設置寬度還是兒童本身? – dnr3 2011-06-07 03:19:12

0

在MSDN上的Layout System文章有對性能的一小部分,但有還有關於optimizing performance of the layout and design的專門文章。也許在那裏有幫助。

在我看來,這個文檔雖然沒有對這個問題提出任何要求,但它可能沒有關係,或者差別可以忽略不計。

0

我真的不明白你在問什麼!


但我真的很喜歡我的設置網格被拉伸爲窗口和寬度&高度設置我文本框爲自動或NaN ,,然後定義特殊的利潤率&對準我文本框

0

我沒有任何統計數據支持這一點,但由於WPF的渲染/佈局引擎通過首先測量所有事物的子元素來工作,人們會假設如果您手動定義子元素的大小,它會有一個邊際影響。

在這種情況下,如果你只是在包裝一個TextBlock元素,那麼最好使用類似<Border>的東西。如果有多個元素,請參閱是否可以使用<StackPanel>