我在WPF中使用StackPanel
只是爲了方便佈局水平對齊的框和線,但似乎應用程序的性能變慢,使用StackPanel
時。是WPF的StackPanel凍結
所有的微軟教程似乎只是談論凍結一些SolidColorBrush
等對象,但StackPanel可以在第一次佈局後凍結,這樣CPU就不必一直佈置它,只需要一次?
或者我只是被迫使用非常快的Canvas
對象並將其中的所有對象一一佈置?
例1:很容易在設計佈局,但缺乏表現:
<StackPanel Height="35" Canvas.Left="49" Canvas.Top="874" Width="395" Orientation="Horizontal">
<TextBox Text="test" Width="65"/>
<Rectangle Stroke="Black" Width="1" />
<TextBox Text="test" Width="55"/>
<Rectangle Stroke="Black" Width="1" />
<TextBox Text="test" Width="75"/>
<Rectangle Stroke="Black" Width="1" />
<TextBox Text="test" Width="35"/>
<Rectangle Stroke="Black" Width="1" />
<TextBox Text="test" Width="95"/>
<Rectangle Stroke="Black" Width="1" />
<TextBox Text="test" Width="65"/>
<Rectangle Stroke="Black" Width="1" />
</StackPanel>
例2:良好的性能,使佈局設計是一種痛苦:
<Canvas Height="35" Canvas.Left="49" Canvas.Top="914" Width="395">
<TextBox Text="test" Width="65" Height="35"/>
<Rectangle Stroke="Black" Width="1" Height="35" Canvas.Left="65"/>
<TextBox Text="test" Width="55" Canvas.Left="66" Height="35"/>
<Rectangle Stroke="Black" Width="1" Height="35" Canvas.Left="195"/>
<TextBox Text="test" Width="75" Height="35" Canvas.Left="122"/>
<Rectangle Stroke="Black" Width="1" Height="35" Canvas.Left="121"/>
<TextBox Text="test" Width="35" Height="35" Canvas.Left="198"/>
<Rectangle Stroke="Black" Width="1" Height="35" Canvas.Left="197"/>
<TextBox Text="test" Width="95" Height="35" Canvas.Left="234"/>
<Rectangle Stroke="Black" Width="1" Height="35" Canvas.Left="329"/>
<TextBox Text="test" Width="65" Height="35" Canvas.Left="330"/>
<Rectangle Stroke="Black" Width="1" Height="35" Canvas.Left="233"/>
</Canvas>
發表您的XAML。另外,如果你有大量的滾動列表,你最好使用'VirtualizingStackPanel'來代替。 – 2013-03-08 20:36:33
沒有爲此計劃滾動 - 只是放置〜15個文本框和1個像素寬的黑色矩形並排。所有這些封裝在UserControl內部,然後在一個窗體中大約5-10個這些UserControls。 – Jaska 2013-03-08 20:58:54
1 - 發佈您的XAML。 2 - 請不要將WPF'Window'稱爲「表單」。這是對我的信仰和價值的侮辱。 – 2013-03-08 20:59:47