为什么< ListVIewItem>< ListView>在我的WPF和MVVM应用程序中没有显示?

izkcnapc  于 2022-11-18  发布在  其他
关注(0)|答案(1)|浏览(160)

我正在构建一个即时消息应用程序,遇到了一个问题,即在绑定状态下不显示。这是我想添加的,我在“ContactCard”模型中创建了该应用程序。

基本上一切工作的权利,直到我添加了一个弹出窗口,打开时,你点击下拉项目“添加”在“联系人”菜单.

我知道问题出在绑定机制上,因为弹出窗口中显示了一些biding错误。

添加新联系人的逻辑是,在按下“添加联系人”弹出窗口中的“添加联系人”按钮时,会执行一个事件处理程序,该处理程序由以下代码组成:

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中添加新联系人到集合函数

public void AddNewContactToCollection(ContactModel newContact)
        {
            viewModel2.Contacts.Add(newContact);
        }

它基本上工作之前没有弹出窗口,所以我尝试删除窗口,但由于我需要它这不是一个解决我的问题。

06odsfpq

06odsfpq1#

您可以在AddContact窗口中插入对MainWindow现有示例的引用,而不是创建一个新示例:

private readonly  MainWindow mainWindow;

public AddContact(MainWindow mainWindow)
{
    InitializeComponent();
    this.mainWindow = mainWindow;
    ...
}

如果从MainWindow显示AddContact窗口,只需如下示例化它:

AddContact window = new AddContact(this);

相关问题