Вы захотите использовать ItemsControl
с ItemsPanel
, установленным на StackPanel
с Orientation
из Horizontal
.
Посмотрите здесь - Использовать другой шаблон для последнего элемента в WPF itemscontrol .
Это решение в XAML, которое позволит вам пропустить точку с запятойпосле последнего элемента в ItemsControl
.
Другая вещь, которую вы можете захотеть сделать, - это преобразовать ваш словарь в ObservableCollection
типа 'Item' или что-то подобное, что означает, что вы можете использовать имена свойствв ваших ItemControl
шаблонных привязках, которые аккуратнее.Что-то вроде:
var items = dictionary.Select(kv => new Item { Name = kv.Key, Value = kv.Value });
this.Items = new ObservableCollection<Item>(items);
Где Items
- это тип ObservableCollection<Item>
, а Item
определяется как:
public class Item
{
public string Name { get; set; }
public int Value { get; set; }
}
Обратите внимание, что если вы создаете экземпляр ObservableCollection
вкроме конструктора, ваш установщик свойства Items
должен вызвать событие PropertyChanged
, чтобы пользовательский интерфейс был уведомлен об изменении.
Я не знаю, сколько элементов вы визуализируете, ноВы также можете использовать WrapPanel
, что позволит Label
s оборачиваться после достижения определенной ширины.Обратите внимание, что WrapPanel
, реализованный в WPF, не виртуализируется, поэтому он не будет работать так же хорошо для большого количества элементов.