我在程序中更改了数据结构。我想要一个List而不是一个字符串。现在我对set函数有些麻烦。 这是旧代码
private string user;
public string User
{
get { return user; }
set
{
user = value;
Notify("user");
}
}
我不知道如何管理user = value; 这是我的尝试:
private List<string> user;
public List<string> User
{
get { return user; }
set
{
user.Add(value);
Notify("user");
}
}
它会抛出一个错误,因为value是一个List而无法添加到列表中。
编辑:对不起,这是一个复制粘贴错误。我通过此编辑更改了旧代码。
所以,我想要做的是将List绑定到datagrid的列。上面的代码是数据类的一部分。
这是window.xaml中的代码
<DataGridTextColumn Header = "user" Binding="{Binding Path=User, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" MinWidth="50" />
答案 0 :(得分:2)
在您的示例中,value
与属性List<string>
的类型相同。因此,您无法使用user.Add(value)
。相反,你可以写:
private List<string> user = new List<string>();
public List<string> User
{
get { return user; }
set
{
user = value;
Notify("user");
}
}
但是如果你使用绑定Users
到DataGrid,那么最好使用一个实现INotifyPropertyChanged
的集合,如ObservableCollection<T>
。这样,当从集合中添加/删除项目或刷新整个集合时,将通知视图(DataGrid)。
private ObservableCollection<string> user = new ObservableCollection<string>();
public ObservableCollection<string> User
{
get { return user; }
set
{
user = value;
Notify("user");
}
}
有关将ObservableCollection
绑定到DataGrid的详细信息,请查看此article。
顺便说一句,我认为该属性更好地命名为Users
而非User
,因为它是一个用户列表。