Pergunta

Eu tenho o seguinte XAML para uma ligação de dados itens controlar para mostrar uma lista de grupos, com um rótulo e botão para adicionar um novo grupo que aparece em primeiro lugar:

<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>

Com um pequeno número de grupos, tudo aparece em uma linha.

Grupos + Grupo1 Grupo2 Group3

Quando eu adicionar mais grupos, o painel envoltório contendo os itens wraps, mas o rótulo e o botão inicial para adicionar um novo grupo está em sua própria linha, com os grupos de ligação de dados a partir da próxima linha.

Grupos +
Grupo1 Grupo2 Group3 Group4
GRUPO5

Eu posso entender por que isso está acontecendo, como os painéis do envoltório são aninhados. A minha pergunta é: como posso incluir o primeiro rótulo e botão no painel envoltório interior, de modo que eles não estão em uma fila por conta própria

Grupos + Grupo1 Grupo2 Group3
Group4 GRUPO5

Foi útil?

Solução

Se você está feliz com isso:

Grupos + Grupo1 Grupo2 Group3
Group4 GRUPO5

Então eu sugiro usar um Grid exterior e um WrapPanel interior. Caso contrário, as opções são:

  1. Incluir outros controles (Label e Button) ou um modelo de vista reprenting esses controles na coleção que você está ligado.
  2. Escreva a sua própria Panel.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top