Mock-Daten werden nicht angezeigt, wenn sie an ICollectionView @ gebunden sin

Wenn ich mein @ gebunden haListBox zu ViewModelsObservableCollection oder XAML resourcedCollectionViewSource, die Scheindaten werden während des Entwurfs angezeigt.

ManchmalCollectionViewSource zeigt diese Daten aufgrund einiger XAML-Änderungen nicht mehr an, aber nach der Neuerstellung des Codes werden die Steuerelemente wieder mit gefälschten Daten gefüllt.

ie Gruppierung, Sortierung und Filterung in meinem Fall werden in ViewModel gesteuert (und von der Datenbank wiederholt), sodass ich mich entschlossen habe, zu @ zu wechselICollectionView -Eigenschaft in ViewModel. Leider erhalten Views keine falschen Daten mehr.

Hier ist ein einfaches Beispiel für meine Ansätze:

<Window x:Class="Test.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:Test"

        mc:Ignorable="d"
        d:DataContext="{d:DesignInstance local:MainWindowViewModel }"

        Title="MainWindow" Height="100" Width="525"
    >

    <Window.Resources>

        <CollectionViewSource x:Key="ItemsCollectionViewSource" Source="{Binding ItemsObservableCollection}"/>

    </Window.Resources>

    <UniformGrid Columns="6">

        <ListBox ItemsSource="{Binding ItemsObservableCollection}" Background="WhiteSmoke" />

        <ListBox ItemsSource="{Binding Source={StaticResource ItemsCollectionViewSource}}" Background="LightYellow" />

        <ListBox ItemsSource="{Binding ItemsICollectionView}" Background="WhiteSmoke" />

        <ListBox ItemsSource="{Binding ItemsCollectionView}" Background="LightYellow" />

        <ListBox ItemsSource="{Binding ItemsListCollectionView}" Background="WhiteSmoke" />

        <ListBox ItemsSource="{Binding ItemsBackCollectionViewSource}" Background="LightYellow" />

    </UniformGrid>

</Window>

code dahinter:

namespace Test
{
    public partial class MainWindow
    {
        public MainWindow()
        {
            DataContext = new MainWindowViewModel();

            InitializeComponent();
        }
    }
}

und ViewModel:

using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Windows.Data;

namespace Test
{
    public class MainWindowViewModel
    {
        public ICollectionView ItemsICollectionView { get; set; }

        public CollectionView ItemsCollectionView { get; set; }

        public ListCollectionView ItemsListCollectionView { get; set; }

        public ObservableCollection<string> ItemsObservableCollection { get; set; }

        public CollectionViewSource ItemsBackCollectionViewSource { get; set; }

        public MainWindowViewModel()
        {
            ItemsObservableCollection = new ObservableCollection<string> {"a", "b", "c"};

            ItemsICollectionView = CollectionViewSource.GetDefaultView(ItemsObservableCollection);

            ItemsCollectionView = CollectionViewSource.GetDefaultView(ItemsObservableCollection) as CollectionView;

            ItemsListCollectionView = CollectionViewSource.GetDefaultView(ItemsObservableCollection) as ListCollectionView;

            ItemsBackCollectionViewSource = new CollectionViewSource {Source = ItemsObservableCollection};
        }
    }
}

Neine der Methoden, die ich versucht habe, um CollectionViewSource nach ViewModel zu verschieben, ermöglicht mir das Anzeigen von Scheindaten:

Ich habe einige Debug-Vergleiche für diese Steuerelemente durchgeführt, aber sie sind in einer Laufzeit ziemlich gleich eingestellt. Ich weiß nicht, ob ich zur Entwurfszeit debuggen kann.

Ist da etwas, was ich vermisse, oder muss es so sein? Vielen Dan

Antworten auf die Frage(0)

Ihre Antwort auf die Frage