Я пытаюсь создать индекс, как показано на скриншоте ниже. Это было сделано простым добавлением программных texboxes в горизонтальные и вертикальные стековые панели внутри scrollviewer. Но это решение было невероятно медленным. Связывание заняло около 5 секунд.Создание индекса в C# WPF
Поэтому я проверил связать List<>
, содержащий все данные непосредственно в ListBox
. Я пробовал различные комбинации ItemTemplates
, но даже с помощью VirtualizingPanel.IsVirtualizing="True"
мне не удалось ускорить привязку. Лишь простой ListBox
без каких-либо попыток группировки выполнил эту работу.
Это единственный XML-часть я использовал для всех моих тестов:
<StackPanel Orientation="Horizontal" Margin="0,0,0,5">
<TextBlock Text="{Binding Name}" Style="{DynamicResource HoverUnderlineStyle}" MouseLeftButtonUp="...">
<TextBlock.ContextMenu>
<ContextMenu>
<!-- ... -->
</ContextMenu>
</TextBlock.ContextMenu>
</TextBlock>
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat=" ({0})">
<Binding Path="Count"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</StackPanel>
Было бы очень здорово, если бы кто-то может помочь мне. Спасибо заранее!
Какой контроль должен содержать текст? TextBlock или TextBox? (Вы написали TextBox, но на скриншоте они выглядят как текстовые блоки). И вы хотите, чтобы элементы были выбраны? – Snicker
Извините за ошибку! TextBlock и да, элементы должны быть выбраны. – tron
Каков фактический вопрос, вы просите о более эффективном решении? –