Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.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# 自动更新数据网格-WPF C Caliburn Micro_C#_Wpf_Xaml_Caliburn.micro - Fatal编程技术网

C# 自动更新数据网格-WPF C Caliburn Micro

C# 自动更新数据网格-WPF C Caliburn Micro,c#,wpf,xaml,caliburn.micro,C#,Wpf,Xaml,Caliburn.micro,@arcticwhite做了一件了不起的工作,帮助我达到了我现在在这篇文章中的观点: 我有一个小故障就可以让它工作了。首先,让我告诉你这个应用程序应该做什么。我有一个数据网格,其中填充了维修订单信息。每个维修订单类都有一个具有自己类的核销列表 该应用程序还有第二个数据网格,显示所选维修订单的所有注销。在arcticwhite的帮助下,我能够使这项工作正常进行 我的问题是,当我向所选维修订单添加新核销时,它不会自动显示在核销数据网格中 在ShellModelView主窗口中,这是注销Datagr

@arcticwhite做了一件了不起的工作,帮助我达到了我现在在这篇文章中的观点:

我有一个小故障就可以让它工作了。首先,让我告诉你这个应用程序应该做什么。我有一个数据网格,其中填充了维修订单信息。每个维修订单类都有一个具有自己类的核销列表

该应用程序还有第二个数据网格,显示所选维修订单的所有注销。在arcticwhite的帮助下,我能够使这项工作正常进行

我的问题是,当我向所选维修订单添加新核销时,它不会自动显示在核销数据网格中

在ShellModelView主窗口中,这是注销Datagrid绑定到的集合的代码:

public BindableCollection<WriteOff> WriteOffs
        {
            get {

                return GetWriteOffs();
            }

        }
public RepairOrder SelectedRepairOrder
        {
            get { return _selectedRepairOrder; }
            set
            {
               if (_selectedRepairOrder == value) return;
                _selectedRepairOrder = value;
                NotifyOfPropertyChange(() => SelectedRepairOrder);
                NotifyOfPropertyChange(() => WriteOffs);

            }
        }
选定维修单绑定到的特性:

public BindableCollection<WriteOff> WriteOffs
        {
            get {

                return GetWriteOffs();
            }

        }
public RepairOrder SelectedRepairOrder
        {
            get { return _selectedRepairOrder; }
            set
            {
               if (_selectedRepairOrder == value) return;
                _selectedRepairOrder = value;
                NotifyOfPropertyChange(() => SelectedRepairOrder);
                NotifyOfPropertyChange(() => WriteOffs);

            }
        }
维修订单类别:

public class RepairOrder
    {

        public string ControlNumber { get; set; }
        public double Value { get; set; }
        public string Note { get; set; }
        public string Schedule { get; set; }
        public int Age { get; set; }
        private List<WriteOff> _myWriteOffs;

        public List<WriteOff> GetMyWriteOffs()
        {

            return _myWriteOffs;
        }

        public void AddMyWriteOff(WriteOff value)
        { _myWriteOffs.Add(value); }


        public RepairOrder(string CN, string SC, double VL)
        {
            ControlNumber = CN;
            Schedule = SC;
            Value = Math.Round(VL, 2);
            Note = null;
            _myWriteOffs = new List<WriteOff>();
        }

        public RepairOrder()
        {
            _myWriteOffs = new List<WriteOff>();
        }

        public static RepairOrder FromCSV(string CSVLine, string Sched)
        {
            string[] values = CSVLine.Split(',');
            RepairOrder rep = new RepairOrder();
            rep.ControlNumber = values[2];
            rep.Value = Math.Round(double.Parse(values[5]),2);
            rep.Age = int.Parse(values[4]);
            rep.Schedule = Sched;
            return rep;
        }



    }
这也是“添加核销”按钮绑定的方法

double WOA;
            if (SelectedAccount == null)
            {
                MessageBox.Show("Please select a Write off Account, Description and amount", "Incorrect Write Off Information", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }
            if (SelectedWODescription == null)
            {
                MessageBox.Show("Please select a Write off Account, Description and amount", "Incorrect Write Off Information", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }
            if (WriteOffAmount == null)
            {
                MessageBox.Show("Please select a Write off Account, Description and amount", "Incorrect Write Off Information", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }
            else
            {
                WOA = Double.Parse(WriteOffAmount);
                if (WOA == 0)
                {
                    MessageBox.Show("Write off can not be $0.00", "Incorrect Write Off Amount", MessageBoxButton.OK, MessageBoxImage.Error);
                    return;
                }
            }

            //Check if there is a selected repair order
            if (SelectedRepairOrder == null)
            {
                MessageBox.Show("Please select a Repair Order to write this off to", "No RO Selected", MessageBoxButton.OK);
                return;
            }

            WOA = Double.Parse(WriteOffAmount);
            WriteOff tempWO = new WriteOff(SelectedAccount, SelectedWODescription, WOA);
            SelectedRepairOrder.AddMyWriteOff(tempWO);
            WriteOffs.Add(tempWO);
            //MessageBox.Show(SelectedAccount + Environment.NewLine + SelectedWODescription + Environment.NewLine + WriteOffAmount, "Test", MessageBoxButton.OK);
            //MessageBox.Show(tempWO.Account + Environment.NewLine + tempWO.Description + Environment.NewLine + tempWO.WriteOffAmount, ToString());

        }
我需要做什么才能使核销数据网格自动填充添加的核销?现在,如果我在维修单网格中选择另一行并返回到第一行,则会显示新的注销

又是我:]

调用WriteOffs.AddtempWO后


只需添加NotifyOfPropertyChange=>WriteOffs

像往常一样,你真是太棒了!我不认为NotifyOfPropertyChange是一个命令,而认为NotifyOfPropertyChange是在setters和getters Java Speak中执行的。我比Java更喜欢C和WPF,但是事情处理方式的改变让我很痛苦。这实际上帮助我解决了另一个类似的故障!我很高兴听到这个消息,也很高兴我能帮上忙:
double WOA;
            if (SelectedAccount == null)
            {
                MessageBox.Show("Please select a Write off Account, Description and amount", "Incorrect Write Off Information", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }
            if (SelectedWODescription == null)
            {
                MessageBox.Show("Please select a Write off Account, Description and amount", "Incorrect Write Off Information", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }
            if (WriteOffAmount == null)
            {
                MessageBox.Show("Please select a Write off Account, Description and amount", "Incorrect Write Off Information", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }
            else
            {
                WOA = Double.Parse(WriteOffAmount);
                if (WOA == 0)
                {
                    MessageBox.Show("Write off can not be $0.00", "Incorrect Write Off Amount", MessageBoxButton.OK, MessageBoxImage.Error);
                    return;
                }
            }

            //Check if there is a selected repair order
            if (SelectedRepairOrder == null)
            {
                MessageBox.Show("Please select a Repair Order to write this off to", "No RO Selected", MessageBoxButton.OK);
                return;
            }

            WOA = Double.Parse(WriteOffAmount);
            WriteOff tempWO = new WriteOff(SelectedAccount, SelectedWODescription, WOA);
            SelectedRepairOrder.AddMyWriteOff(tempWO);
            WriteOffs.Add(tempWO);
            //MessageBox.Show(SelectedAccount + Environment.NewLine + SelectedWODescription + Environment.NewLine + WriteOffAmount, "Test", MessageBoxButton.OK);
            //MessageBox.Show(tempWO.Account + Environment.NewLine + tempWO.Description + Environment.NewLine + tempWO.WriteOffAmount, ToString());

        }