C# 与集合的交互不使用集合访问器 公共类MainWindowVM:ViewModel { #地区公众成员 公共用户本地用户 { get=>Settings.LocalUser; 设置 { Settings.LocalUser=value; OnPropertyChanged(); } } 公共网站用户选择用户 { get=>selectedUser; 设置 { selectedUser=值; OnPropertyChanged(); } } 公共字符串输入消息 { get=>inputMessage; 设置 { inputMessage=值; OnPropertyChanged(); } } 公共列表消息列表 { 得到 { 如果(selectedUser==null) 返回null; 返回SelectedUser.MessageThread; } 设置 { 选择eduser.MessageThread=value; OnPropertyChanged(); } } 公共RelayCommand sendMessage命令 { 得到 { 返回sendMessageCommand?? (sendMessageCommand=new RelayCommand(obj=> { SendMessage(); })); } } #端区 #区域公共方法 公共MainWindowVM(窗口) { 窗口主窗口=窗口; MawLib.WindowResizer WindowResizer=新的MawLib.WindowResizer(窗口); Settings.InitializeInstance(); SelUser=SelectUser; UserListRaw=新列表 { 新Web用户(新用户ID(“SomeTestUser23”), 新WebUser(新用户ID(“NoName”)) }; WebClient.Connect(); } public void SelectUser(WebUser用户) { SelectedUser=用户; MessageList=SelectedUser.MessageThread; } #端区 #区域私人成员 私人网络用户选择用户; 私有字符串输入消息; #端区 #区域私有方法 私有void SendMessage() { if(InputMessage!=“”&&InputMessage!=null) { 添加(新消息(InputMessage、LocalUser、SelectedUser)); WebClient.SendRequest(新消息(InputMessage、Settings.LocalUser、selectedUser)、Request.RequestType.Message); InputMessage=“”; } } #端区 }

C# 与集合的交互不使用集合访问器 公共类MainWindowVM:ViewModel { #地区公众成员 公共用户本地用户 { get=>Settings.LocalUser; 设置 { Settings.LocalUser=value; OnPropertyChanged(); } } 公共网站用户选择用户 { get=>selectedUser; 设置 { selectedUser=值; OnPropertyChanged(); } } 公共字符串输入消息 { get=>inputMessage; 设置 { inputMessage=值; OnPropertyChanged(); } } 公共列表消息列表 { 得到 { 如果(selectedUser==null) 返回null; 返回SelectedUser.MessageThread; } 设置 { 选择eduser.MessageThread=value; OnPropertyChanged(); } } 公共RelayCommand sendMessage命令 { 得到 { 返回sendMessageCommand?? (sendMessageCommand=new RelayCommand(obj=> { SendMessage(); })); } } #端区 #区域公共方法 公共MainWindowVM(窗口) { 窗口主窗口=窗口; MawLib.WindowResizer WindowResizer=新的MawLib.WindowResizer(窗口); Settings.InitializeInstance(); SelUser=SelectUser; UserListRaw=新列表 { 新Web用户(新用户ID(“SomeTestUser23”), 新WebUser(新用户ID(“NoName”)) }; WebClient.Connect(); } public void SelectUser(WebUser用户) { SelectedUser=用户; MessageList=SelectedUser.MessageThread; } #端区 #区域私人成员 私人网络用户选择用户; 私有字符串输入消息; #端区 #区域私有方法 私有void SendMessage() { if(InputMessage!=“”&&InputMessage!=null) { 添加(新消息(InputMessage、LocalUser、SelectedUser)); WebClient.SendRequest(新消息(InputMessage、Settings.LocalUser、selectedUser)、Request.RequestType.Message); InputMessage=“”; } } #端区 },c#,.net,wpf,C#,.net,Wpf,需要有一个消息列表。添加通过消息列表属性进行交互,但由于某些原因它会绕过它。我还试图通过赋值访问访问器,但这也绕过了属性。我一直在寻找关于这方面的信息,但我没有找到任何合适的信息,也许我看起来很糟糕?正如Dzianis Karpuk所建议的,需要使用ObservableCollection而不是List,一切都正常工作。向列表中添加某些内容肯定不会设置该列表。如果您将新列表分配给该属性,则会调用setter。请使用ObservableCollection而不是list多谢提示,我将尝试使用它。

需要有一个消息列表。添加通过消息列表属性进行交互,但由于某些原因它会绕过它。我还试图通过赋值访问访问器,但这也绕过了属性。我一直在寻找关于这方面的信息,但我没有找到任何合适的信息,也许我看起来很糟糕?

正如Dzianis Karpuk所建议的,需要使用ObservableCollection而不是List,一切都正常工作。

向列表中添加某些内容肯定不会设置该列表。如果您将新列表分配给该属性,则会调用setter。请使用ObservableCollection而不是list多谢提示,我将尝试使用它。
public class MainWindowVM : ViewModel
    {
        #region public members

        public User LocalUser
        {
            get => Settings.LocalUser;
            set
            {
                Settings.LocalUser = value;
                OnPropertyChanged();
            }
        }
        public WebUser SelectedUser
        {
            get => selectedUser;
            set
            {
                selectedUser = value;
                OnPropertyChanged();
            }
        }

        public string InputMessage
        {
            get => inputMessage;
            set
            {
                inputMessage = value;
                OnPropertyChanged();
            }
        }
        public List<Message> MessageList
        {
            get
            {
                if (selectedUser == null)
                    return null;
                return SelectedUser.MessageThread;
            }
            set
            {
                SelectedUser.MessageThread = value;
                OnPropertyChanged();
            }
        }
        public RelayCommand SendMessageCommand
        {
            get
            {
                return sendMessageCommand ??
                    (sendMessageCommand = new RelayCommand(obj =>
                    {
                        SendMessage();
                    }));
            }
        }

        #endregion

        #region public methods

        public MainWindowVM(Window window)
        {
            Window MainWindow = window;
            MawLib.WindowResizer windowResizer = new MawLib.WindowResizer(window);
            Settings.InitializeInstance();
            SelUser = SelectUser;
            UserListRaw = new List<WebUser>
            {
                new WebUser(new UserId("SomeTestUser23")),
                new WebUser(new UserId("NoName"))
            };
            WebClient.Connect();
        }
        public void SelectUser(WebUser user)
        {
            SelectedUser = user;
            MessageList = SelectedUser.MessageThread;
        }

        #endregion

        #region private members

        private WebUser selectedUser;
        private string inputMessage;

        #endregion

        #region private methods

        private void SendMessage()
        {
            if (InputMessage != "" && InputMessage != null)
            {
                MessageList.Add(new Message(InputMessage, LocalUser, SelectedUser));
                WebClient.SendRequest(new Message(InputMessage, Settings.LocalUser, selectedUser), Request.RequestType.Message);
                InputMessage = "";
            }
        }

        #endregion
    }