我会感谢一些帮助,这必须是一个基本的语言问题,但我找不到答案。这是一个Windows8商店应用程序,但可以是任何C# XAML。我有一个包含两个项目的clsRecord (如下):我的问题是SET only get的名称被调用。不会为对象NumQuestions调用它。我部分地理解这是因为调用函数通过GET获取对对象的引用。解决这个问题的正确方法是什么,这样它也会调用SET?谢谢你的帮助。
公共类UserRecord : INotifyPropertyChanged
{
public UserRecord()
{
_NumQuestions = new Collection<int>();
}
private string _Name;
public string Name
{
get
{
return _Name;
}
set
{
if (value != _Name)
{
_Name = value;
NotifyPropertyChanged("Name");
}
}
}
private Collection<int> _NumQuestions;
public Collection<int> NumQuestions
{
get
{
return _NumQuestions;
}
set // this never gets called
{
if (value != _NumQuestions)
{
_NumQuestions = value;
NotifyPropertyChanged("NumQuestions");
}
}
}
etc with the notify ...让另一个类创建上述内容的列表
public class UserRecords : INotifyPropertyChanged
{
public ObservableCollection<UserRecord> List { get; set; }
public UserRecords()
{
List = new ObservableCollection<UserRecord>();
}
public void ClearCurrentUserScore()
{
int i;
for (i = 0; i < List[CurrentUserIndex].NumQuestions.Count; i++)
{
List[CurrentUserIndex].NumQuestions[i] = i; // only GET is called
List[CurrentUserIndex].Name = "X"; // SET is called as expected
}
}发布于 2013-08-09 07:12:27
在第一种情况下,List[CurrentUserIndex].NumQuestions返回Collection<int>的一个实例。这意味着[i]表达式绑定的是Collection<int>,而不是UserRecord类型。因此,set永远不会被调用,因为集合实际上出现在Collection<int>的索引器中。
您应该使用ObservableCollection<int>而不是Collection<int>。另外,删除set方法,只提供一个get
private ObservableCollection<int> _NumQuestions;
public ObservableCollection<int> NumQuestions
{
get
{
return _NumQuestions;
}
}https://stackoverflow.com/questions/18137748
复制相似问题