Поддельные данные не отображаются при привязке к ICollectionView

Если бы я связал свойListBox для ViewModelsObservableCollection или XAMLCollectionViewSource, макет данных показывает в то время как в дизайне.

ИногдаCollectionViewSource перестает показывать эти данные из-за некоторых изменений XAML, но после пересоздания кода он снова заполняет элементы управления поддельными данными.

Группировка, сортировка и фильтрация в моем случае контролируются во ViewModel (и повторяется из базы данных), поэтому я решил перейти кICollectionView свойство основано на ViewModel. К сожалению, представления больше не получают фиктивные данные вообще.

Вот простой пример моих подходов:

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

код позади:

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

            InitializeComponent();
        }
    }
}

и 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};
        }
    }
}

Ни один из методов, которые я пробовал для перемещения CollectionViewSource в ViewModel, не позволяет мне видеть фиктивные данные:

Я выполнил некоторое отладочное сравнение этих элементов управления, но во время выполнения они были установлены примерно одинаково. Я не знаю о возможности отладки во время разработки.

Я что-то упускаю, или так должно быть? Спасибо

Ответы на вопрос(0)

Ваш ответ на вопрос