【发布时间】:2021-05-06 12:57:08
【问题描述】:
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
}
需要有一个 Message List.Add 通过 Message List 属性进行交互,但由于某种原因它绕过了它。我也尝试通过赋值访问访问器,但这也绕过了属性。我正在寻找有关此的信息,但没有找到合适的信息,也许我看起来很糟糕?
【问题讨论】:
-
向列表添加内容肯定不会设置该列表。如果您为该属性分配一个新列表,则将调用 setter。
-
使用 ObservableCollection 代替 List
-
感谢您的提示,我会尝试使用它。