【问题标题】:How to make a private variable visible to select classes如何使私有变量对选择类可见
【发布时间】:2018-09-07 13:46:45
【问题描述】:

我有两个独立的类:YourBooks 和 NewBook。 YourBooks 有一个私有的 Observable Collection。我希望 NewBook 能够更新 Observable Collection 的值。但是 YourBooks 是一个 XAML 类(继承 Page)。而且程序的逻辑是这样的,我无法继承它。有没有办法更新我的 Observable 集合?

我觉得我错过了一点,而你们却错过了一点。我忘了提到 NewBook 是一个 ContentDialog 的事实。保证 NewBook 仅从 YourBooks 初始化。 YourBooks 是 Page 类型,它创建一个名为 NewBook 的自定义对话框。

【问题讨论】:

  • 向 YourBooks 类添加一个允许您修改私人收藏的方法。
  • 您可以通过公共只读属性公开私有字段。但是如何从 NewBook 访问 YourBooks?

标签: c# uwp observablecollection uwp-xaml


【解决方案1】:

你能为那个变量创建一个“setter”/“getter”吗? 访问私有方法的公共方法

public void SetObservableCollection(List<Object> value)
{
   ObservableCollection = value;
}

// Or maybe...
public void AddItemToObservableCollection(Object value)
{
   ObservableCollection.add(value)
}

【讨论】:

    【解决方案2】:

    非常基本,但我认为这应该让你朝着正确的方向前进:

    public class temp
    {
        private ObservableCollection<int> _myCollection;
        public temp()
        {
            _myCollection = new ObservableCollection<int>();
        }
    
        public void addInt(int myint)
        {
            _myCollection.Add(myint);
        }
    }
    

    然后,添加到您的ObservableCollection

    var tempthing = new temp();
    tempthing.addInt(5);
    tempthing.addInt(6);
    

    编辑(根据您的评论)。 如果我理解正确,为什么不将YourBooks 传递给NewBook

    public class YourBooks
    {
        private ObservableCollection<int> _myCollection;
        public YourBooks()
        {
            _myCollection = new ObservableCollection<int>();
            _myCollection.Add(4);
            var newBook = new NewBook(this);
        }
    
        public void addInt(int myint)
        {
            _myCollection.Add(myint);
        }
    }
    
    public class NewBook
    {
        public YourBooks YourBooks { get; set; }
        public NewBooks(YourBooks yourBooks)
        {
            YourBooks = yourBooks
            addSomething();
        }
    
        public void addSomething()
        {
            YourBook.addInt(5);
            YourBook.addInt(6);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-14
      • 1970-01-01
      • 2015-03-01
      • 2018-03-20
      • 1970-01-01
      • 1970-01-01
      • 2017-02-20
      • 2013-06-13
      相关资源
      最近更新 更多