Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用户界面不是';不可观测收集_C#_Wpf_Listview_Observablecollection - Fatal编程技术网

C# 用户界面不是';不可观测收集

C# 用户界面不是';不可观测收集,c#,wpf,listview,observablecollection,C#,Wpf,Listview,Observablecollection,我试图让ListView更改为我在ObvservableCollection中修改的任何值 我目前正在使用它并将集合绑定到我的ListView private ObservableCollection<Task> _tasks = TaskInit.TaskCollection; /// <summary> /// Observable Collection to hold all tasks /// </summar

我试图让ListView更改为我在ObvservableCollection中修改的任何值

我目前正在使用它并将集合绑定到我的ListView

private ObservableCollection<Task> _tasks = TaskInit.TaskCollection;
        /// <summary>
        /// Observable Collection to hold all tasks
        /// </summary>
        /// 

        public ObservableCollection<Task> TasksCollection
        {
            get { return _tasks; }
            set
            {
                _tasks = value;
                NotifyPropertyChanged("TasksCollection");
            }
        }
该值仍将与上一个值相同,即使它本应更改

有人能指出我可能提出的问题吗

xaml的第一行是:

<ListView SelectionMode="Single" ScrollViewer.CanContentScroll="True" x:Name="listTasks" Margin="0,0,0,35" Background="{x:Null}" BorderBrush="{x:Null}" ItemsSource="{Binding TasksCollection, Mode=TwoWay}" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Auto" BorderThickness="0" FontFamily="Myriad Pro" Foreground="{x:Null}" IsSynchronizedWithCurrentItem="True">

任务类:

public class Task : INotifyPropertyChanged
    {
        /// <summary>
        /// 
        /// </summary>
        public string Module { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string FirstValue { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string SecondValue { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string ThirdValue { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public int Minutes { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public string TaskNumber { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public string Story1 { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public string Story2 { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public string Story3 { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public string NetworkAdapter { get; set; }

        public event PropertyChangedEventHandler PropertyChanged;

        protected virtual void OnPropertyChanged(string propertyName)
        {
            PropertyChangedEventHandler handler = PropertyChanged;
            if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
        }
    }
公共类任务:INotifyPropertyChanged
{
/// 
/// 
/// 
公共字符串模块{get;set;}
/// 
/// 
/// 
公共字符串FirstValue{get;set;}
/// 
/// 
/// 
公共字符串第二个值{get;set;}
/// 
/// 
/// 
公共字符串第三个值{get;set;}
/// 
/// 
/// 
公共整数分钟数{get;set;}
/// 
/// 
/// 
公共字符串TaskNumber{get;set;}
/// 
/// 
/// 
公共字符串Story1{get;set;}
/// 
/// 
/// 
公共字符串Story2{get;set;}
/// 
/// 
/// 
公共字符串Story3{get;set;}
/// 
/// 
/// 
公共字符串网络适配器{get;set;}
公共事件属性更改事件处理程序属性更改;
受保护的虚拟void OnPropertyChanged(字符串propertyName)
{
PropertyChangedEventHandler处理程序=PropertyChanged;
if(handler!=null)handler(这是新的PropertyChangedEventArgs(propertyName));
}
}

ObservableCollection将处理从集合中添加或删除项的情况,但不会处理集合中项的属性发生更改的情况。表示动态数据集合,该集合在添加、删除项或刷新整个列表时提供通知

您需要确保任务类实现INotifyPropertyChanged接口,并在其TaskNumber属性更改时激发PropertyChanged事件:

 private string _taskNumber;
 public string TaskNumber
 {
     get { return _taskNumber; }
     set
     {
         if(_taskNumber!= value)
         {
            _taskNumber= value;
            OnPropertyChanged("TaskNumber");
         }
     }
 }

任务类实现INotifyPropertyChanged,但当其属性的值更改时,它从不实际激发PropertyChanged事件。当您的每个属性发生更改时,您需要手动调用OnPropertyChanged,这不是自动发生的

ObservableCollection将处理从集合中添加或删除项的情况,但不会处理集合中项的属性发生更改的情况。表示动态数据集合,该集合在添加、删除项或刷新整个列表时提供通知

您需要确保任务类实现INotifyPropertyChanged接口,并在其TaskNumber属性更改时激发PropertyChanged事件:

 private string _taskNumber;
 public string TaskNumber
 {
     get { return _taskNumber; }
     set
     {
         if(_taskNumber!= value)
         {
            _taskNumber= value;
            OnPropertyChanged("TaskNumber");
         }
     }
 }

任务类实现INotifyPropertyChanged,但当其属性的值更改时,它从不实际激发PropertyChanged事件。当您的每个属性发生更改时,您需要手动调用OnPropertyChanged,这不是自动发生的

很抱歉,我有点困惑,只是关于您显示的
公共字符串任务
部分。我已使用任务类更新了我的问题。请参阅我的编辑。你的TaskNumber属性应该是这样的。工作得很好,从来没有人知道这是一个如此简单的修复。谢谢很抱歉,我有点困惑,就在您展示的
公共字符串任务部分。我已使用任务类更新了我的问题。请参阅我的编辑。你的TaskNumber属性应该是这样的。工作得很好,从来没有人知道这是一个如此简单的修复。谢谢