Я создаю приложение WPF для управления запасами, но у меня возникли проблемы с созданием представлений. Я использую шаблон MVVM и получаю сообщение об ошибке при создании экземпляра XAML-файла Views.
Было бы очень полезно, если бы вы рассказали мне, как это исправить или нужно ли мне изменить какую-либо часть моего кода.
UserModel:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WPF_CS_InventoryManager.Models
{
public class UserModel
{
private string _firstname;
private string _lastname;
private string _email;
private string _id;
public string Firstname
{
get => _firstname;
set
{
if (_firstname != value)
{
_firstname = value;
}
}
}
public string Lastname
{
get => _lastname;
set
{
if (_lastname != value)
{
_lastname = value;
}
}
}
public string Email
{
get => _email;
set
{
if (_email != value)
{
_email = value;
}
}
}
public string Id
{
get => _id;
set
{
if (_id != value)
{
_id = value;
}
}
}
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WPF_CS_InventoryManager.ViewModels
{
internal class BaseViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler? PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
}
Я создаю приложение WPF для управления запасами, но у меня возникли проблемы с созданием представлений. Я использую шаблон MVVM и получаю сообщение об ошибке при создании экземпляра XAML-файла Views. Было бы очень полезно, если бы вы рассказали мне, как это исправить или нужно ли мне изменить какую-либо часть моего кода. UserModel: [code]using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;
namespace WPF_CS_InventoryManager.Models { public class UserModel { private string _firstname; private string _lastname; private string _email; private string _id;
public string Firstname { get => _firstname; set { if (_firstname != value) { _firstname = value; } } } public string Lastname { get => _lastname; set { if (_lastname != value) { _lastname = value; } } } public string Email { get => _email; set { if (_email != value) { _email = value; } } } public string Id { get => _id; set { if (_id != value) { _id = value; } } } } } [/code] BaseViewModel: [code]using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks;
namespace WPF_CS_InventoryManager.ViewModels { internal class BaseViewModel : INotifyPropertyChanged { public event PropertyChangedEventHandler? PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName) { this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } } } [/code] UserViewModel: [code]using System.Collections.ObjectModel; using System.Windows.Input; using WPF_CS_InventoryManager.Commands; using WPF_CS_InventoryManager.DataBase; using WPF_CS_InventoryManager.Models; using WPF_CS_InventoryManager.Utils;
public UserViewModel() { _bd = new BD(); _users = _bd.GetUsers(); _selectedUser = new UserModel(); }
public ObservableCollection Users { get => _users; set { if (_users != value) { _users = value; OnPropertyChanged(nameof(Users)); } } }
public UserModel SelectedUser { get => _selectedUser; set { if (_selectedUser != value) { _selectedUser = value; OnPropertyChanged(nameof(SelectedUser)); } } }
// ========== COMMANDS ==========
public ICommand AddCommand => new RelayCommand(AddExecute, CanAddExecute); public ICommand EditCommand => new RelayCommand(EditExecute, CanEditOrDelete); public ICommand DeleteCommand => new RelayCommand(DeleteExecute, CanEditOrDelete); public ICommand ExportPdfCommand => new RelayCommand(_ => ExportPdf());