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

标签 c# properties get set inotifypropertychanged

希望能就基本语言问题提供一些帮助,但我找不到答案。这是一个 Windows 8 商店应用程序,但可以是任何 C# XAML。我有一个包含两项的 clsRecord(如下): 我的问题是 SET 只调用名称。不会为对象 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 ...

让另一个类创建上述列表

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]表达式结合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/

相关文章:

c# - Unicode @font-face 文本在 FF 中工作,而不在 Chrome 和 IE 中工作

c# list property Add 方法额外 Action

php - 在 php 中使用 ftp_get 感到困惑

页面的 jQuery 加载主体

c# - 异步任务正在卡住 UI

c# - 你能推荐一个格式化 C# 代码的 CSS 样式表吗?

c# - 使用反射来分析参数及其值

oop - 什么是方法、属性和功能?

xml - Delphi:将对象流式传输到 XML,包括数组属性

google-analytics - Cookie POST 请求中的 Google Analytics CID