Warum ist dieser XAML-Code immer den Fehler: die Items-Auflistung muss leer sein vor der Verwendung von "ItemsSource"

Kann jemand zaubern aus diesem code, warum die ItemsSource-Linie bekommen würde eine

Items-Auflistung muss leer sein, bevor
Verwendung von "ItemsSource".

Fehler? Die meisten Lösungen die ich gefunden habe, zeigen, ill-komponiert, XAML, z.B. ein zusätzliches element etc. was ich nicht zu haben scheinen. Wenn ich

ItemsSource="{Binding Kunden}"

es läuft ohne Fehler (aber natürlich nicht angezeigt, die Liste meiner Kunden).

Kunden definiert, so im ViewModel und hat 3 CustomerViewModels:

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

Keine Vorschläge, wo Sie suchen?

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

ANTWORT:

Hab ich ja mit fehlerhaften XAML, nur übersehen Sie, sollte die Schaltfläche, die außerhalb des 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"
    />
einfach nur zu erwähnen fehlerhaften XAML mir geholfen

InformationsquelleAutor Edward Tanguay | 2009-04-22

Schreibe einen Kommentar