2009-12-30 16 views
1

У меня есть ViewModel в WPF, который выглядит примерно так:WPF - создать сетку цветов

public class SwatchViewModel 
{ 
    public ObservableCollection<Color> Colors { get; private set; } 
} 

Я хочу, чтобы отобразить каждый из цветов в коллекции, раскладывая их в колонках. Каждый из столбцов должен занимать столько же места в элементе управления, и все объединенные столбцы должны заполнять ширину элемента управления. Элемент управления может быть определен произвольно.

Так что если Colors содержит { Colors.Red, Colors.Green, Colors.Blue }, тогда я бы хотел, чтобы три столбца, каждая из которых занимала треть ширины элемента управления, каждый столбец был соответствующим образом окрашен.

Каков наилучший способ сделать это? Он кажется подходящим для ItemsControl, за исключением факта, что ItemsControl не растягивает свои позиции, чтобы заполнить доступную ширину ... это работа для Grid ... но столбцы сетки не могут быть связаны ....

XAML предпочтительнее, хотя я вполне счастлив вернуться на C#, если это необходимо.

+0

Вы также заинтересованы в поведении по выбору? –

ответ

4

Вы можете использовать UniformGrid. Единая сетка точно соответствует вашим потребностям, она добавляет ячейки в соответствии с количеством содержащихся в ней детей.

Пример:

<ItemsControl ItemsSource="..." ItemTemplate="..."> 
    <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
      <UniformGrid Rows="1"/> 
     </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
</ItemsControl> 

Установка Rows к 1 сдерживает счетчика строк на 1 (Duh ...).

Смежные вопросы