WPF ItemsControl ItemTemplate границы с GroupStyle - PullRequest
1 голос
/ 07 октября 2010

Это первый раз, когда я опубликовал картинку, так что, надеюсь, получится хорошо (картинка стоит тысячи слов, и я не хочу набирать тысячу слов).Но изображение ниже - это то, что я пытаюсь выполнить.

У меня есть коллекция объектов, которые мне нужны, сгруппированные по свойству «Группа».Я использую CollectionViewSource, который привязан к моему источнику данных, который выполняет для меня группировку.

Я использую элемент управления ItemsControl (но мог бы легко использовать другой элемент управления) для отображения этой информации.Я могу сгруппировать информацию по свойствам, но я бы хотел, чтобы вся группа была окружена рамкой.Я не хочу окружать каждый элемент в группе всей группой.

Как мне выполнить что-то вроде рисунка ниже с рамкой вокруг всей группы?

alt text

1 Ответ

2 голосов
/ 07 октября 2010

что-то вроде этого должно сделать свое дело. используйте это как стиль вашей группы. Возможно, вы захотите настроить это больше, но вы сможете получить общую идею из этого фрагмента.

главное знать, что вы привязываетесь к GroupItem. В основном есть 3 свойства на GroupItem. Имя (группы), ItemCount (сколько элементов в вашей группе) и сами элементы.

<ControlTemplate TargetType="{x:Type GroupItem}">

    <Border BorderBrush="Black" BorderThickness="1" Margin="5">
        <StackPanel>
            <TextBlock Text="{Binding Name}"/>
            <Border BorderBrush="Black" BorderThickness="1" Margin="0,0,0,0">
                <ItemsPresenter />
            </Border>
        </StackPanel>
    </Border>

</ControlTemplate>

EDIT: Когда вы группируете коллекцию элементов, источником является не коллекция ваших элементов, а коллекция GroupItems, которая затем содержит элементы из вашей коллекции, принадлежащие этой группе. Вот почему x:Type это GroupItem. Здесь не требуется привязка, кроме свойств объекта GroupItem, который вы хотите отобразить.

Вы должны поместить это в свой <ItemControl> XAML следующим образом:

    <ItemsControl>
        <ItemsControl.GroupStyle>
<!-------------- style from above goes here --------------->
        <ItemsControl.GroupStyle/>
    <ItemsControl/>

здесь - статья о группировке в WPF, которая поможет вам.

...