Pourquoi ce code XAML reçoit-il l'erreur: La collection d'éléments doit être vide avant d'utiliser ItemsSource

Quelqu'un peut-il évoquer à partir de ce code pourquoi l'ItemsSource ligne serait d'obtenir un

Collection d'éléments doit être vide avant
à l'aide de ItemsSource.

erreur? La plupart des solutions que j'ai trouvé de point de mal composé XAML, par exemple, un élément supplémentaire, etc. ce que je ne semble pas avoir. Quand je prends

ItemsSource="{Binding Clients}"

il s'exécute sans erreur (mais bien sûr, ne veut pas afficher ma liste de clients).

Clients est définit ainsi, dans le ViewModel et dispose de 3 CustomerViewModels:

Customer[] customers = Customer.GetCustomers();
IEnumerable<CustomerViewModel> customersViewModels = customers.Select(c => new CustomerViewModel(c));
this.Customers = new ReadOnlyCollection<CustomerViewModel>(customersViewModels.ToArray());

Toutes les suggestions de savoir où chercher?

<UserControl x:Class="TestCommandSink123.View.CustomersView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:TestCommandSink123"
    xmlns:view="clr-namespace:TestCommandSink123.View"
    xmlns:vm="clr-namespace:TestCommandSink123.ViewModel"
    xmlns:sink="clr-namespace:TestCommandSink123.CommandSinkClasses"
    sink:CommandSinkBinding.CommandSink="{Binding}"
    >

    <UserControl.CommandBindings>
        <sink:CommandSinkBinding Command="vm:CustomersViewModel.CloseAllCustomersCommand"/>
    </UserControl.CommandBindings>

    <DockPanel>
        <ItemsControl
            DockPanel.Dock="Bottom" ItemsSource="{Binding Customers}">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <view:CustomerView/>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
            <Button
                Command="vm:CustomersViewModel.CloseAllCustomersCommand"
                Content="Close All"
                Margin="0,0,0,8"
                />
        </ItemsControl>

    </DockPanel>
</UserControl>

RÉPONSE:

Je n'ai en effet mal formé XAML, juste négligé, le Bouton doit être à l'extérieur de la ItemsControl:

<ItemsControl
    DockPanel.Dock="Bottom" ItemsSource="{Binding Customers}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <view:CustomerView/>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>
<Button
    Command="vm:CustomersViewModel.CloseAllCustomersCommand"
    Content="Close All"
    Margin="0,0,0,8"
    />

source d'informationauteur Edward Tanguay