我正在構建一個即時訊息傳遞應用程式,但遇到了一個問題,即沒有顯示在 bind 中。這是我在“ContactCard”模型中創建的要添加的內容。

基本上一切正常,直到我添加了一個彈出視窗,當您單擊“聯系人”選單中的下拉專案“添加”時打開該視窗。

我知道問題出在系結機制上,因為彈出視窗中顯示了一些出價錯誤。

添加新聯系人背后的邏輯是,在“添加聯系人”彈出視窗中按下“添加聯系人”按鈕時,會執行一個事件處理程式,該處理程式由以下代碼組成:
public partial class AddContact : System.Windows.Window
{
public MainWindow mainWindow;
public AddContact()
{
InitializeComponent();
mainWindow = new MainWindow();
mainWindow.DataContext = this;
}
int st = 1;
private void AddNewContactBtn_Click(object sender, RoutedEventArgs e)
{
string username = this.contactUsername.Text;
string imageUrl = this.contactImageURL.Text;
ContactModel newContact = new ContactModel
{
Username = "Nixt",
ImageSource = "https://www.dictionary.com/e/wp-content/uploads/2018/04/Sid-the-Sloth-300x300.jpg",
Messages = new ObservableCollection<MessageModel>(new List<MessageModel> {
new MessageModel
{
FirstMessage = true,
ImageSource = $"https://www.dictionary.com/e/wp-content/uploads/2018/04/Sid-the-Sloth-300x300.jpg",
Message = $"Sporo?ilo {st 1}",
Username = "Nixt",
UsernameColor = "Red"
} ,
new MessageModel
{
Username = "Nixt",
UsernameColor = "Red",
FirstMessage = false,
ImageSource = "https://www.dictionary.com/e/wp-content/uploads/2018/04/Sid-the-Sloth-300x300.jpg",
Message = $"Sporo?ilo {st 2} ",
Time = DateTime.Now
},
new MessageModel
{
Username = "povodnikt",
UsernameColor = "#409AFF",
ImageSource = "https://imgur.com/FeMHSd6.jpg",
Message = $"Zdravo? {st 3}",
Time = DateTime.Now
},
new MessageModel
{
Username = "povodnikt",
UsernameColor = "#409AFF",
ImageSource = "https://imgur.com/FeMHSd6.jpg",
Message = $"Adijo frend! {st}",
Time = DateTime.Now
}
})
};
mainWindow.AddNewContactToCollection(newContact);
}
}
MainWindow.xaml.cs 中的 AddNewContactToCollection 函式
public void AddNewContactToCollection(ContactModel newContact)
{
viewModel2.Contacts.Add(newContact);
}
它在沒有彈出視窗的情況下基本上可以作業,所以我嘗試洗掉視窗,但因為我需要它,所以這不是我的問題的解決方案。
uj5u.com熱心網友回復:
AddContact您可以使用對現有實體的參考來注入視窗,MainWindow而不是創建新實體:
private readonly MainWindow mainWindow;
public AddContact(MainWindow mainWindow)
{
InitializeComponent();
this.mainWindow = mainWindow;
...
}
如果您AddContact從 顯示視窗MainWindow,您只需像這樣實體化它:
AddContact window = new AddContact(this);
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/527033.html
標籤:C#wpf虚拟机数据绑定
