可移植库ObservableCollection绑定错误

时间:2018-10-19 19:54:13

标签: c# wpf .net-4.5 portability .net-4.6.1

我有一个附加到视图类的视图模型,该视图类的控件属性导致绑定错误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')

该源曾经存在于Visual Studio 2015中创建的单个WPF应用程序模板中,可能针对.NET 4.6.1。此来源有效。该属性是公共的,并在视图模型中实例化。

自从将视图模型移动到Visual Studio 2017中以4.5.1为目标的可移植C#库后,出现了绑定错误。结果,在Application.Current调度程序线程上调用ObservableCollection.Add不会导致ItemsControl更新。该应用程序项目是在Visual Studio 2017中针对.NET 4.6.1创建的WPF模板。这包括WindowsBase,PresentationCore等。dll位于bin中,是最新的,并且在运行时可以正确解析。调试控制台中没有异常。

组装分离是否引起我不知道的问题?即使.NET框架相同(我假定向后兼容,最低要求),环境是否有可能导致此问题(VC编译器?)或框架(IEnumerable与ObservableCollection)的变化。

0 个答案:

没有答案