Ошибка привязки ObservableCollection переносимой библиотеки

У меня есть модель представления, прикрепленная к классу представления, свойства элемента управления которого приводят к ошибке привязки 40. Представление - это пользовательский элемент управления, действующий как ItemsControl.

    <ItemsControl ItemsSource = "{Binding TaskList}" >

        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <local:TaskItemUserControl />
            </DataTemplate>
        </ItemsControl.ItemTemplate>

    </ItemsControl>

</Grid>

ItemsSource привязан к ObservableCollection в модели просмотра.

using Helpers.System;
using System.Collections.ObjectModel;

namespace ApplicationCore
{
    /// <summary>
    /// View model container is a list view for task list item controls
    /// </summary>
    public class TaskListViewModel : BaseViewModel
    {
        #region properties

        /// <summary>
        /// Runtime data to show in the task control list
        /// </summary>
        public ObservableCollection<TaskItemViewModel> TaskList =
            new ObservableCollection<TaskItemViewModel>();

        #endregion
    }
}

При переходе на страницу, на которой размещен ItemsControl, появляется ошибка привязки.

System.Windows.Data Error: 40 : BindingExpression path error: 'TaskList' property not found on 'object' ''TaskListViewModel' (HashCode=3416986)'. BindingExpression:Path=TaskList; DataItem='TaskListViewModel' (HashCode=3416986); target element is 'ItemsControl' (Name=''); target property is 'ItemsSource' (type 'IEnumerable')

Источник существовал в одном шаблоне приложения WPF, созданном в Visual Studio 2015, вероятно, предназначенном для .NET 4.6.1. Этот источник работал. Свойство является общедоступным и создается в модели просмотра.

После перемещения модели представления в переносимую библиотеку C#, нацеленную на 4.5.1 в Visual Studio 2017, появилась ошибка привязки. В результате вызов ObservableCollection.Add в потоке диспетчера Application.Current не приводит к обновлению ItemsControl. Проект приложения представляет собой шаблон WPF, созданный в Visual Studio 2017 для .NET 4.6.1. Это включает в себя WindowsBase, PresentationCore и т. д. DLL-файлы существуют в bin, обновлены и правильно разрешаются во время выполнения. В консоли отладки не отображаются исключения.

Вызывает ли разделение сборки проблему, о которой я не знаю? Есть ли изменение в среде, которое могло вызвать это (компилятор VC?) Или фреймворк (IEnumerable против ObservableCollection), даже если платформа .NET такая же (я предполагаю, как минимум, обратную совместимость).

Это должно быть свойство, а не поле: public ObservableCollection<TaskItemViewModel> TaskList { get; } = ...

Clemens 19.10.2018 22:05

Ооо! Хорошее место, я попробую, когда вернусь. Удивлен, что это сработало так ... файл, должно быть, изменился во время переноса.

lukemtesta 19.10.2018 22:13

@Clemens Большое спасибо.

lukemtesta 19.10.2018 22:25
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
12
0

Другие вопросы по теме