C# ListView未在WPF中更新

C# ListView未在WPF中更新,c#,wpf,mvvm,C#,Wpf,Mvvm,下面是我的视图代码。我的列表在后端被设置和更新,但它并没有反映在前端,即使我将其与ListItems绑定在一起。 你能告诉我为什么会这样吗?如果您需要其他文件,请告诉我 ListOfVehicle.xaml //静态变量 private static bool _IsEnableReplaceButton; public static bool IsEnableReplaceButton { get { return _IsEnableReplaceBut

下面是我的视图代码。我的列表在后端被设置和更新,但它并没有反映在前端,即使我将其与ListItems绑定在一起。 你能告诉我为什么会这样吗?如果您需要其他文件,请告诉我

ListOfVehicle.xaml

//静态变量

    private static bool _IsEnableReplaceButton;
    public static bool IsEnableReplaceButton
    {
        get { return _IsEnableReplaceButton; }
        set { _IsEnableReplaceButton = value; }
    }
    private string _VehicleNo_Error;
    public string VehicleNo_Error
    {
        get { return _VehicleNo_Error; }
        set { _VehicleNo_Error = value; OnPropertyChanged("VehicleNo_Error");  }
    }

    private string _Model_Error;
    public string Model_Error
    {
        get { return _Model_Error; }
        set { _Model_Error = value; OnPropertyChanged("Model_Error"); }
    }

    private string _ManufacturingDate_Error;
    public string ManufacturingDate_Error
    {
        get { return _ManufacturingDate_Error; }
        set { _ManufacturingDate_Error = value; OnPropertyChanged("ManufacturingDate_Error"); }
    }

    private string _IUNo_Error;
    public string IUNo_Error
    {
        get { return _IUNo_Error; }
        set { _IUNo_Error = value; OnPropertyChanged("IUNo_Error"); }
    }

    private string _Personnel_Error;
    public string Personnel_Error
    {
        get { return _Personnel_Error; }
        set { _Personnel_Error = value; OnPropertyChanged("Personnel_Error"); }
    }

    private string _ErroMesage;
    public string ErrorMessage
    {
        get { return _ErroMesage; }
        set 
        { 
            _ErroMesage = value; OnPropertyChanged("ErrorMessage");
            if (ErrorMessage.Trim() == "" || ErrorMessage == null)
                HelpVisibility = "hidden";
            else
                HelpVisibility = "visible";
        }
    }

    private string _HelpVisibility;
    public string HelpVisibility
    {
        get { return _HelpVisibility; }
        set { _HelpVisibility = value; OnPropertyChanged("HelpVisibility"); }
    }

    private static AddVehicle _addVehicle;
    public static AddVehicle addVehicle
    {
        get 
        {
            return _addVehicle;
        }
        set
        {
            _addVehicle = value;
        }
    }
    // Form Components

    private Guid? _UniqueNo;
    public Guid? UniqueNo 
    {
        get { return _UniqueNo; }
        set
        {
            if (value == null || (!value.Equals(_UniqueNo)))
            {
                _UniqueNo = value;
                OnPropertyChanged("UniqueNo");

            }
        }
    }

    private string _VehicleNo;
    public string VehicleNo 
    {
        get { return _VehicleNo; }
        set
        {
            if (value == null || (!value.Equals(_VehicleNo)))
            {
                _VehicleNo = value;
                EditText = _VehicleNo;
                OnPropertyChanged("VehicleNo");
                validateSpecificData(1);
            }
        }
    }

    private string _Model;
    public string Model
    {
        get { return _Model; }
        set
        {
            if (value == null || (!value.Equals(_Model)))
            {
                _Model = value;
                EditText = _Model;
                OnPropertyChanged("Model");
                validateSpecificData(2);
            }
        }
    }

    private DateTime? _ManufacturingDate;
    public DateTime? ManufacturingDate
    {
        get { return _ManufacturingDate; }
        set
        {
            if (value == null || (!value.Equals(_ManufacturingDate)))
            {
                _ManufacturingDate = value;
                EditText = _ManufacturingDate.ToString();
                OnPropertyChanged("ManufacturingDate");
                validateSpecificData(3);
            }
        }
    }

    private string _IUNo;
    public string IUNo
    {
        get { return _IUNo; }
        set
        {
            if (value == null || (!value.Equals(_IUNo)))
            {
                _IUNo = value;
                EditText = _IUNo;
                OnPropertyChanged("IUNo");
                validateSpecificData(4);
            }
        }
    }

    private string _PersonnelNameSelected;
    public string PersonnelNameSelected
    {
        get { return _PersonnelNameSelected; }
        set
        {
            if (value != _PersonnelNameSelected)
            {
                _PersonnelNameSelected = value;
                EditText = _PersonnelNameSelected;
                OnPropertyChanged("PersonnelNameSelected");
            }
        }
    }

    private ObservableCollection<string> _PersonnelName;
    public ObservableCollection<string> PersonnelName
    {
        get { return _PersonnelName; }
        set
        {
            if (value != _PersonnelName)
            {
                _PersonnelName = value;
                EditText = _VehicleNo;
                OnPropertyChanged("PersonnelName");
            }
        }
    }

    private ObservableCollection<VehicleModel> _listItems;
    public ObservableCollection<VehicleModel> ListItems
    {
        get { return _listItems; }
        set
        {
            if (value == null || (!value.Equals(_listItems)))
            {
                _listItems = value;
            }
        }
    }

    // Other Variables

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

    private VehicleModel _SelectedRow;
    public VehicleModel SelectedRow
    {
        get { return _SelectedRow; }
        set
        {
            if (value != _SelectedRow)
            {
                _SelectedRow = value;
                OnPropertyChanged("SelectedRow");

                if (SelectedRow != null)
                {
                    UniqueNo = _SelectedRow.UniqueNo;
                    VehicleNo = _SelectedRow.VehicleNo;
                    Model = _SelectedRow.Model;
                    ManufacturingDate = _SelectedRow.ManufacturingDate;
                    IUNo = _SelectedRow.IUNo;
                    PersonnelNameSelected = _SelectedRow.PersonnelNameSelected;

                    _IsEnableReplaceButton = true;
                }

            }
        }
    }

    private int _Progress;
    public int Progress
    {
        get { return _Progress; }
        set { _Progress = value; OnPropertyChanged("Progress"); }
    }

    #endregion

    // Command Variables

    private ICommand _saveButton_Command;
    public ICommand SaveButton_Command
    {
        get { return _saveButton_Command; }
        set { _saveButton_Command = value; }
    }

    private ICommand _ReplaceButton_Command;
    public ICommand ReplaceButton_Command
    {
        get { return _ReplaceButton_Command; }
        set { _ReplaceButton_Command = value; }
    }

    private ICommand _RemoveButton_Command;
    public ICommand RemoveButton_Command
    {
        get { return _RemoveButton_Command; }
        set { _RemoveButton_Command = value; }
    }

    private ICommand _OpenAddWindow_Command;
    public ICommand OpenAddWindow_Command
    {
        get { return _OpenAddWindow_Command; }
        set { _OpenAddWindow_Command = value; }
    }
    #region Methods
//非静态变量

    private static bool _IsEnableReplaceButton;
    public static bool IsEnableReplaceButton
    {
        get { return _IsEnableReplaceButton; }
        set { _IsEnableReplaceButton = value; }
    }
    private string _VehicleNo_Error;
    public string VehicleNo_Error
    {
        get { return _VehicleNo_Error; }
        set { _VehicleNo_Error = value; OnPropertyChanged("VehicleNo_Error");  }
    }

    private string _Model_Error;
    public string Model_Error
    {
        get { return _Model_Error; }
        set { _Model_Error = value; OnPropertyChanged("Model_Error"); }
    }

    private string _ManufacturingDate_Error;
    public string ManufacturingDate_Error
    {
        get { return _ManufacturingDate_Error; }
        set { _ManufacturingDate_Error = value; OnPropertyChanged("ManufacturingDate_Error"); }
    }

    private string _IUNo_Error;
    public string IUNo_Error
    {
        get { return _IUNo_Error; }
        set { _IUNo_Error = value; OnPropertyChanged("IUNo_Error"); }
    }

    private string _Personnel_Error;
    public string Personnel_Error
    {
        get { return _Personnel_Error; }
        set { _Personnel_Error = value; OnPropertyChanged("Personnel_Error"); }
    }

    private string _ErroMesage;
    public string ErrorMessage
    {
        get { return _ErroMesage; }
        set 
        { 
            _ErroMesage = value; OnPropertyChanged("ErrorMessage");
            if (ErrorMessage.Trim() == "" || ErrorMessage == null)
                HelpVisibility = "hidden";
            else
                HelpVisibility = "visible";
        }
    }

    private string _HelpVisibility;
    public string HelpVisibility
    {
        get { return _HelpVisibility; }
        set { _HelpVisibility = value; OnPropertyChanged("HelpVisibility"); }
    }

    private static AddVehicle _addVehicle;
    public static AddVehicle addVehicle
    {
        get 
        {
            return _addVehicle;
        }
        set
        {
            _addVehicle = value;
        }
    }
    // Form Components

    private Guid? _UniqueNo;
    public Guid? UniqueNo 
    {
        get { return _UniqueNo; }
        set
        {
            if (value == null || (!value.Equals(_UniqueNo)))
            {
                _UniqueNo = value;
                OnPropertyChanged("UniqueNo");

            }
        }
    }

    private string _VehicleNo;
    public string VehicleNo 
    {
        get { return _VehicleNo; }
        set
        {
            if (value == null || (!value.Equals(_VehicleNo)))
            {
                _VehicleNo = value;
                EditText = _VehicleNo;
                OnPropertyChanged("VehicleNo");
                validateSpecificData(1);
            }
        }
    }

    private string _Model;
    public string Model
    {
        get { return _Model; }
        set
        {
            if (value == null || (!value.Equals(_Model)))
            {
                _Model = value;
                EditText = _Model;
                OnPropertyChanged("Model");
                validateSpecificData(2);
            }
        }
    }

    private DateTime? _ManufacturingDate;
    public DateTime? ManufacturingDate
    {
        get { return _ManufacturingDate; }
        set
        {
            if (value == null || (!value.Equals(_ManufacturingDate)))
            {
                _ManufacturingDate = value;
                EditText = _ManufacturingDate.ToString();
                OnPropertyChanged("ManufacturingDate");
                validateSpecificData(3);
            }
        }
    }

    private string _IUNo;
    public string IUNo
    {
        get { return _IUNo; }
        set
        {
            if (value == null || (!value.Equals(_IUNo)))
            {
                _IUNo = value;
                EditText = _IUNo;
                OnPropertyChanged("IUNo");
                validateSpecificData(4);
            }
        }
    }

    private string _PersonnelNameSelected;
    public string PersonnelNameSelected
    {
        get { return _PersonnelNameSelected; }
        set
        {
            if (value != _PersonnelNameSelected)
            {
                _PersonnelNameSelected = value;
                EditText = _PersonnelNameSelected;
                OnPropertyChanged("PersonnelNameSelected");
            }
        }
    }

    private ObservableCollection<string> _PersonnelName;
    public ObservableCollection<string> PersonnelName
    {
        get { return _PersonnelName; }
        set
        {
            if (value != _PersonnelName)
            {
                _PersonnelName = value;
                EditText = _VehicleNo;
                OnPropertyChanged("PersonnelName");
            }
        }
    }

    private ObservableCollection<VehicleModel> _listItems;
    public ObservableCollection<VehicleModel> ListItems
    {
        get { return _listItems; }
        set
        {
            if (value == null || (!value.Equals(_listItems)))
            {
                _listItems = value;
            }
        }
    }

    // Other Variables

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

    private VehicleModel _SelectedRow;
    public VehicleModel SelectedRow
    {
        get { return _SelectedRow; }
        set
        {
            if (value != _SelectedRow)
            {
                _SelectedRow = value;
                OnPropertyChanged("SelectedRow");

                if (SelectedRow != null)
                {
                    UniqueNo = _SelectedRow.UniqueNo;
                    VehicleNo = _SelectedRow.VehicleNo;
                    Model = _SelectedRow.Model;
                    ManufacturingDate = _SelectedRow.ManufacturingDate;
                    IUNo = _SelectedRow.IUNo;
                    PersonnelNameSelected = _SelectedRow.PersonnelNameSelected;

                    _IsEnableReplaceButton = true;
                }

            }
        }
    }

    private int _Progress;
    public int Progress
    {
        get { return _Progress; }
        set { _Progress = value; OnPropertyChanged("Progress"); }
    }

    #endregion

    // Command Variables

    private ICommand _saveButton_Command;
    public ICommand SaveButton_Command
    {
        get { return _saveButton_Command; }
        set { _saveButton_Command = value; }
    }

    private ICommand _ReplaceButton_Command;
    public ICommand ReplaceButton_Command
    {
        get { return _ReplaceButton_Command; }
        set { _ReplaceButton_Command = value; }
    }

    private ICommand _RemoveButton_Command;
    public ICommand RemoveButton_Command
    {
        get { return _RemoveButton_Command; }
        set { _RemoveButton_Command = value; }
    }

    private ICommand _OpenAddWindow_Command;
    public ICommand OpenAddWindow_Command
    {
        get { return _OpenAddWindow_Command; }
        set { _OpenAddWindow_Command = value; }
    }
    #region Methods
//非静态方法

    public static void showMessage(string message)
    {
        MessageBox.Show(message);
    } 
    public void SaveToList(object o1)
    {

        try
        {
            // Setting Flags
            ErrorMessage = "";

            // To Verify Validations
            validateAllData();


            // ProgressBar
            //Progress = 0;
            //ProgressBar();

            // Adding a Record
            ListItems.Add(new VehicleModel(VehicleNo, Model, ManufacturingDate, IUNo, PersonnelNameSelected));

            // Setting Flags etc.
            IsEnableReplaceButton = false;

            CloseAdd();

            // Clearing Form
            UniqueNo = null;
            VehicleNo = null;
            Model = null;
            ManufacturingDate = null;
            IUNo = null;
            PersonnelNameSelected = null;



        }
        catch (Exception ex)
        {
            Progress = 0;
            ErrorMessage = ex.Message;
        }
    }

    public void ReplaceToList(object o1)
    {

        try
        {
            VehicleModel vm = ListItems.First(x => x.UniqueNo == UniqueNo);
            int indexToRemove = ListItems.IndexOf(vm);

            // Setting Flags
            ErrorMessage = "";

            // To Verify Validations
            validateAllData();

            // ProgressBar
            Progress = 0;
            ProgressBar();

            // Replacing Record
            ListItems.Insert(indexToRemove + 1, vm);
            ListItems.RemoveAt(indexToRemove);

            // Clearing Form
            VehicleNo = null;
            Model = null;
            ManufacturingDate = null;
            IUNo = null;
            PersonnelNameSelected = null;

            // Setting Flags etc.
            ErrorMessage = "";
            IsEnableReplaceButton = false;
        }
        catch (Exception ex)
        {
            ErrorMessage = ex.Message;
        }
    }

    public void RemoveList(object o1)
    {

        VehicleModel vm = ListItems.First(x => x.UniqueNo == UniqueNo);
        int indexToRemove = ListItems.IndexOf(vm);

        ErrorMessage = "";
        try
        {
            // Setting Flags
            ErrorMessage = "";
            Progress = 0;

            // Removing Selected Record
            ListItems.RemoveAt(indexToRemove);

            // Clearing Form
            VehicleNo = null;
            Model = null;
            ManufacturingDate = null;
            IUNo = null;
            PersonnelNameSelected = null;

            // Setting Flags etc.
            ErrorMessage = "";
            IsEnableReplaceButton = false;
        }
        catch (Exception ex)
        {
            ErrorMessage = ex.Message;
        }
    }

    void ProgressBar()
    {
        BackgroundWorker worker = new BackgroundWorker();
        worker.WorkerReportsProgress = true;
        worker.DoWork += worker_DoWork;
        worker.ProgressChanged += worker_ProgressChanged;

        worker.RunWorkerAsync();

    }
    void worker_DoWork(object sender, DoWorkEventArgs e)
    {
        for (int i = 1; i <= 100; i++)
        {
            (sender as BackgroundWorker).ReportProgress(i);
            Thread.Sleep(5);
        }

    }
    void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
    {
        Progress = e.ProgressPercentage;
    }

    public void validateAllData()
    {
        VehicleModel tempObject = new VehicleModel(VehicleNo, Model, ManufacturingDate, IUNo, PersonnelNameSelected);
    }
    public void validateSpecificData(int ErrorCode)
    {
        VehicleModel tempObject = new VehicleModel();
        switch(ErrorCode)
        {
            case 1: tempObject.VehicleNo=VehicleNo;break;
            case 2: tempObject.Model=Model;break;
            case 3: tempObject.ManufacturingDate=ManufacturingDate;break;
            case 4: tempObject.IUNo=IUNo;break;
        }

        tempObject.ValidateSpecificData(this, ErrorCode);
    }

    public void OpenAdd(object o1)
    {
        if(addVehicle==null)
        {
            addVehicle = new AddVehicle();
        }

        addVehicle.Show();
    }
    public void CloseAdd()
    {
        if (addVehicle != null)
        {
            addVehicle.Close();
            addVehicle = null;
        } 
    }
    #endregion

    #region Constructors

    public VehicleMainViewModel()
    {
        // Initialization
        //VehicleModel vm = new VehicleModel();
        ListItems = new ObservableCollection<VehicleModel>();
        PersonnelName = ListOfPersonnelViewModel.PersonNameList_Updating;
        //PersonnelName = new ObservableCollection<string>() { "ABC", "DEF", "GHI" };

        // Setting Flags
        ErrorMessage = "";
        IsEnableReplaceButton = false;


        // Commands Initialization
        SaveButton_Command = new RelayCommand(new Action<object>(SaveToList));
        ReplaceButton_Command = new RelayCommand(new Action<object>(ReplaceToList));
        RemoveButton_Command = new RelayCommand(new Action<object>(RemoveList));
        OpenAddWindow_Command = new RelayCommand(new Action<object>(OpenAdd));
    } 

    #endregion


}
}

可能您还没有创建单例实例,所以有可能为每个窗口创建多个实例。下面是ViewModel Singleton的示例

private static VehicleMainViewModel _Instance;
    public static VehicleMainViewModel getInstance
    {
        get
        {
            if(_Instance==null)
            {
                _Instance = new VehicleMainViewModel();
            }
            return _Instance;
        }
    }

在生成集合的ViewModel中发布代码