与集合的交互不使用set访问器

  • 本文关键字:set 访问 集合 交互 c# .net wpf
  • 更新时间 :
  • 英文 :

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
}

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

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

最新更新