C# 为什么我的C代码不能添加到列表并显示它?
我试图自学C语言,但遇到了以下代码问题:C# 为什么我的C代码不能添加到列表并显示它?,c#,wpf,list,addressbook,C#,Wpf,List,Addressbook,我试图自学C语言,但遇到了以下代码问题: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; usi
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace WpfApplication1
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
contacts.Add(new Contact()
{
Name = "James",
Email = "james@mail.com",
PhoneNumber = "01234 111111"
});
contacts.Add(new Contact()
{
Name = "Bob",
Email = "bob@mail.com",
PhoneNumber = "01234 222222"
});
contacts.Add(new Contact()
{
Name = "Emma",
Email = "emma@mail.com",
PhoneNumber = "01234 333333"
});
}
protected List<Contact> contacts = new List<Contact>();
public List<Contact> Contacts
{
get { return contacts; }
set { contacts = value; }
}
private void NewContactButton_Click(object sender, RoutedEventArgs e)
{
contacts.Add(new Contact()
{
Name = NameTextBox.Text,
Email = EmailTextBox.Text,
PhoneNumber = PhoneTextBox.Text
});
}
}
}
它没有在列表中显示新联系人,我也不确定它是否正在创建新联系人。它完美地显示了前三个
我觉得我遗漏了一些重要的东西。改变
protected List<Contact> contacts = new List<Contact>();
public List<Contact> Contacts
{
get { return contacts; }
set { contacts = value; }
}
到
并使用System.Collections.ObjectModel添加;到代码的顶部
并对代码的其余部分进行必要的更改。更改
protected List<Contact> contacts = new List<Contact>();
public List<Contact> Contacts
{
get { return contacts; }
set { contacts = value; }
}
到
并使用System.Collections.ObjectModel添加;到代码的顶部
并对代码的其余部分进行必要的更改。使用下面提到的代码,它将起作用:
public MainWindow()
{
InitializeComponent();
dgContacts.ItemsSource = Contacts;
}
private void btnClick_Click(object sender, RoutedEventArgs e)
{
Contacts.Add(new contact()
{
Name = "Person",
Email = "Person Address",
PhoneNumber = "Person Ph"
});
}
protected ObservableCollection<contact> contacts = new ObservableCollection<contact>();
public ObservableCollection<contact> Contacts
{
get { return contacts; }
set { contacts = value; }
}
此代码的xaml将是:
<DataGrid Name="dgContacts" Margin="5" AutoGenerateColumns="True" ItemsSource="{Binding}"></DataGrid>
WPF的主要部分是绑定,如果您正确地进行绑定,它将为您创造奇迹。如果该代码适用于您;我将向您展示另一种绑定它的方法。使用下面提到的代码,它将工作:
public MainWindow()
{
InitializeComponent();
dgContacts.ItemsSource = Contacts;
}
private void btnClick_Click(object sender, RoutedEventArgs e)
{
Contacts.Add(new contact()
{
Name = "Person",
Email = "Person Address",
PhoneNumber = "Person Ph"
});
}
protected ObservableCollection<contact> contacts = new ObservableCollection<contact>();
public ObservableCollection<contact> Contacts
{
get { return contacts; }
set { contacts = value; }
}
此代码的xaml将是:
<DataGrid Name="dgContacts" Margin="5" AutoGenerateColumns="True" ItemsSource="{Binding}"></DataGrid>
WPF的主要部分是绑定,如果您正确地进行绑定,它将为您创造奇迹。如果该代码适用于您;我将向您展示另一种绑定方法。最简单但不是最干净的解决方案是让MainWindow实现INotifyPropertyChanged,然后在将联系人添加到列表后调用PropertyChanged事件。通过这种方式,绑定目标会收到已更改和更新的通知。最简单但不是最干净的解决方案是让MainWindow实现INotifyPropertyChanged,然后在将联系人添加到列表后调用PropertyChanged事件。通过这种方式,绑定目标会收到已更改的通知并进行更新。您应该将NewContactButton\u Click方法分配给事件Click!无法识别ObservableCollection,ide不会构建它。ObservableCollection位于System.Collections.ObjectModel命名空间中。您可能必须将其添加到using语句中,因为默认情况下它不是添加的命名空间。您应该将NewContactButton\u Click方法分配给事件Click!无法识别ObservableCollection,ide不会构建它。ObservableCollection位于System.Collections.ObjectModel命名空间中。您可能必须将它添加到using语句中,因为它不是默认添加的名称空间。