Привязка данных WPF ItemsControl — добавление дополнительных начальных элементов управления

StackOverflow https://stackoverflow.com/questions/806967

Вопрос

У меня есть следующий XAML для элемента управления элементами с привязкой к данным, который отображает список групп с меткой и кнопкой для добавления новой группы, появляющейся первой:

<WrapPanel Orientation="Horizontal">
    <Label Content="Groups" />
    <Button x:Name="btnGroupAdd" Click="btnGroupAdd_Click" Content="+" />
    <ItemsControl ItemsSource="{Binding}" x:Name="_groupList" >
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <WrapPanel Orientation="Horizontal">
                </WrapPanel>
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <Border Padding="3" BorderThickness="1">
                    <WrapPanel>
                        <CheckBox x:Name="_groupEnabled" Click="GroupEnabled_Click" IsChecked="{Binding Path=Checked}">
                            <TextBlock x:Name="_groupName" Text="{Binding Path=Group.Name}" ></TextBlock>
                        </CheckBox>
                        <Button x:Name="_deleteGroup" FontStyle="Normal" Click="DeleteGroup_Click" />
                    </WrapPanel>
                </Border>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>

При небольшом количестве групп все отображается в одной строке.

Группы + Группа1 Группа2 Группа3

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

Группы +
Группа1 Группа2 Группа3 Группа4
Группа5

Я могу понять, почему это происходит, поскольку панели переноса вложены.Мой вопрос:как включить первую метку и кнопку во внутреннюю панель переноса, чтобы они не находились в отдельной строке?

Группы + Группа1 Группа2 Группа3
Группа4 Группа5

Это было полезно?

Решение

Если вас это устраивает:

Группы + Группа1 Группа2 Группа3
Группа4 Группа5

Тогда я бы предложил использовать внешний Grid и внутренний WrapPanel.В противном случае ваши варианты:

  1. Включите другие элементы управления (Label и Button) или модель представления, воспроизводящую эти элементы управления в коллекции, к которой вы привязываетесь.
  2. Напишите свой собственный Panel.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top