我需要帮助:
我有一个绑定到IEnumerable源的列表框
Person是一个包含以下属性的类:Name(string),isChecked(bool)
我需要为名为“Bob”的特定人员更改属性“isChecked”
我无法更改酒店的价值!
请帮助
答案 0 :(得分:1)
如果您在更新模型时尝试更新显示的值,则可能需要在模型类上实现INotifyPropertyChanged,例如
public class Person : INotifyPropertyChanged
{
public string Name
{
get
{
return this.name;
}
set
{
this.name = value;
this.FirePropertyChanged("Name");
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected void FirePropertyChanged(string propertyName)
{
if (this.PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
答案 1 :(得分:0)
我假设您只需要为视图更改一次?
根据您拥有的数据量,最简单的实施方法是将模型中的数据扩展到例如a List<>
,然后进行修改并将控件绑定到该列表。
var people = myDataSource.ToList(); // a LINQ extension - you may need a 'using'
var bob = people.FirstOrDefault(p => p.Name == "Bob");
if (bob != null)
{
bob.isChecked = true;
}
或者,可能更好的是,使用例如动态进行更改。 a选择()
var peopleWithBobTicked = myDataSource.Select(
p => {
if (p.Name == "BoB") p.isTicked = true;
return p;
});