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

Если я привязал свой ListBox к ViewModels ObservableCollection или ресурсам XAML CollectionViewSource, фиктивные данные будут отображаться в процессе разработки.

Иногда 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, не позволяет мне видеть фиктивные данные:

введите описание изображения здесь

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

Что-то мне не хватает, или должно быть так? Спасибо


person Jakub Pawlinski    schedule 29.06.2016    source источник
comment
Возможный дубликат: stackoverflow.com/questions/1447962.   -  person Sergey Vyacheslavovich Brunov    schedule 30.06.2016
comment
связанный вопрос предназначен для смешивания, в то время как у меня есть проблемы с редактором xaml (или, может быть, он тоже называется смешением?), также ни один из ответов не помогает в решении этой проблемы.   -  person Jakub Pawlinski    schedule 30.06.2016
comment
Я добавил к этому еще несколько часов, но все еще не смог. Даже создание CollectionViewSource как свойства в исходном коде не дает фиктивного результата. Я подумал, что, возможно, это как-то связано с CollectionViewType, но его значение в обоих случаях равно нулю.   -  person Jakub Pawlinski    schedule 30.06.2016
comment
Для отладки во время разработки (см. Этот вопрос: заголовок stackoverflow.com/questions/27475247/), вы можете открыть визуальную студию с тем же проектом и подключить отладчик к первой визуальной студии. Установите точки останова во втором VS, обновите дизайн в первом ... и voilá!   -  person ANeves thinks SE is evil    schedule 02.08.2017