Привязка данных WPF ItemsControl - добавление дополнительных начальных элементов управления - PullRequest
0 голосов
/ 30 апреля 2009

У меня есть следующий 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

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

Группы +
Group1 Group2 Group3 Group4
Group5

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

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

1 Ответ

1 голос
/ 30 апреля 2009

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

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

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

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