gpt4 book ai didi

c# - 未调用对象的属性集

转载 作者:太空宇宙 更新时间:2023-11-03 10:59:47 25 4
gpt4 key购买 nike

希望能为基本语言问题提供帮助,但我找不到答案。这是一个 Windows 8 商店应用程序,但可以是任何 C# XAML。我有一个包含两个项目的 clsRecord(如下):我的问题是 SET only get's called for Name。不会为对象 NumQuestions 调用它。我部分理解这是因为调用函数正在使用 GET 获取对对象的引用。解决这个问题的正确方法是什么,所以它也调用 SET?感谢您的帮助。

公共(public)类 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 ...

让另一个类(class)创建上述列表

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
}
}

最佳答案

第一种情况List[CurrentUserIndex].NumQuestions返回 Collection<int> 的实例.这意味着 [i]表达式绑定(bind) Collection<int>不是 UserRecord类型。因此 set永远不会被调用,因为该集合实际上出现在 Collection<int> 的索引器中.

而不是使用 Collection<int>你应该使用 ObservableCollection<int> .另外删除 set方法,只提供一个 get

private ObservableCollection<int> _NumQuestions;
public ObservableCollection<int> NumQuestions
{
get
{
return _NumQuestions;
}
}

关于c# - 未调用对象的属性集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18137748/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com