Ошибка привязки ObservableCollection для переносимой библиотеки
У меня есть view-модель, присоединенная к классу представления, свойства элемента управления которого приводят к ошибке привязки 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 vs ObservableCollection), даже несмотря на то, что платформа.NET одинакова (я предполагаю обратную совместимость как минимум).