コンボ ボックス コントロールにすべての行を表示するのではなく、表示されている項目を表示する必要があります。それをスクロールしている間に、次に表示されるアイテムをロードする必要があります。
どうやってやるの?また、仮想的にロードされているかどうかを確認するにはどうすればよいですか?
サンプル例:
public List<string> items = new List<string>();
public MainWindow()
{
InitializeComponent();
DataContext = this;
for (int i = 0; i < 100000; i++)
{
items.Add("item"+ i.ToString());
}
combo.ItemsSource = items;
}
フロントエンド:
<Grid>
<StackPanel>
<ComboBox x:Name="combo" Width="150" HorizontalAlignment="Left" Margin="10,10,0,10" VirtualizingPanel.IsVirtualizing="True" />
</StackPanel>
</Grid>
リンクを参照した後:
<ComboBox x:Name="combo" Height="100" Width="150" ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ScrollViewer.CanContentScroll="True" HorizontalAlignment="Left" Margin="10,10,0,10"
VirtualizingStackPanel.IsVirtualizing="True" VirtualizingStackPanel.VirtualizationMode ="Recycling" >
<ComboBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel IsVirtualizing="True"
VirtualizationMode="Recycling" />
</ItemsPanelTemplate>
</ComboBox.ItemsPanel>
</ComboBox>