

速くしたければ、TextBoxを使うべきではないことは敢えて承知の上での質問です。  
TextBoxを使って、「少しでも」速くする手段があれば教えてください。


CC BY-SA 3.0
2016-10-01T11:13:32.367
29280
2016-10-01T12:30:54.273
2266
question
c# wpf
WPFでTextBoxを大量に使用すると異常に遅い


7000個の`TextBox`が同時に表示されるデザインというのは実用的でないので(仮にそうであるなら考え直すべきです)、常識的には何らかのスクロールにより実際に画面上に表示されているのはごく一部なのではないでしょうか。  
そのようなデザインである場合は **UIの仮想化** を行うと負荷が低減できます。一言でいえば「表示されていない要素は実際に作成しない」という方法です。  
`ItemsSource`を指定している場合、`ListView`や`DataGrid`では既定で仮想化が有効ですが、`ItemsControl`の場合は

[code]

    <ItemsControl
        VirtualizingPanel.IsVirtualizing="True">
        </ItemsControl.ItemsHost>
            <VirtualizingStackPanel />
        <ItemsControl.ItemsHost>
    </ItemsControl>
    
[/code]

と`VirtualizingStackPanel`を使用することで仮想化できます。なお`StackPanel`以外のレイアウトを使用している場合は組み込みの`VirtualizingPanel`がないため、自作しなければなりません。

実際にはUI以外の原因でレスポンスが悪くなっている可能性もありますので、一度プロファイラーで分析することをお勧めします。


CC BY-SA 3.0
2016-10-01T12:30:54.273
29284
2016-10-01T12:30:54.273
5750
29280
answer