Binding UWP如何在page类之外更改ListView绑定可观察集合

Binding UWP如何在page类之外更改ListView绑定可观察集合,binding,win-universal-app,non-static,Binding,Win Universal App,Non Static,我有一个页面,上面有一个列表视图,它的项源绑定到一个可观察的集合属性,这当然是非静态的。 我的问题是如何在listview所在的Page类之外访问或更改该集合。 我想在外部更改该集合,因为我还想从其他页面更改或向该列表视图添加新项目 我正在用App.xaml.cs中的静态属性解决这个问题。 因此,我可以从我想要的任何页面访问我的存储库/集合。 每次导航到页面时,我都会通过绑定属性访问App.MyCollection 您可以创建一个属性,getter将在其中创建一个新的ObervableColle

我有一个页面,上面有一个列表视图,它的项源绑定到一个可观察的集合属性,这当然是非静态的。 我的问题是如何在listview所在的Page类之外访问或更改该集合。
我想在外部更改该集合,因为我还想从其他页面更改或向该列表视图添加新项目

我正在用App.xaml.cs中的静态属性解决这个问题。 因此,我可以从我想要的任何页面访问我的存储库/集合。 每次导航到页面时,我都会通过绑定属性访问App.MyCollection

您可以创建一个属性,getter将在其中创建一个新的ObervableCollection(App.MyCollection); 如果当前私有成员为空

App.xaml.cs

private static IEnumerable<OrderHistory> _orderHistory;
public static IEnumerable<OrderHistory> OrderHistory
{
   get
   {
       if (_orderHistory == null)
           _orderHistory = new ObservableCollection<OrderHistory>();
           return _orderHistory;
       }
   set
   {
       if (_orderHistory != value)
           _orderHistory = value;
       }
   }
}

我正在用App.xaml.cs中的静态属性解决这个问题。 因此,我可以从我想要的任何页面访问我的存储库/集合。 每次导航到页面时,我都会通过绑定属性访问App.MyCollection

您可以创建一个属性,getter将在其中创建一个新的ObervableCollection(App.MyCollection); 如果当前私有成员为空

App.xaml.cs

private static IEnumerable<OrderHistory> _orderHistory;
public static IEnumerable<OrderHistory> OrderHistory
{
   get
   {
       if (_orderHistory == null)
           _orderHistory = new ObservableCollection<OrderHistory>();
           return _orderHistory;
       }
   set
   {
       if (_orderHistory != value)
           _orderHistory = value;
       }
   }
}

我不明白你到底在建议什么,你能用一些代码澄清一下吗?谢谢附言:我试着制作一个静态的公共财产,并将私人收藏分配给它。然后我对它进行了更改,但是更改只发生在该静态属性中,并且我的ListView项目没有被更新。我编辑了这篇文章。请看一下这是否对你有帮助。非常感谢。这很容易理解,而且对我也有帮助:)我不明白你到底在建议什么,你能用一些代码澄清一下吗?谢谢附言:我试着制作一个静态的公共财产,并将私人收藏分配给它。然后我对它进行了更改,但是更改只发生在该静态属性中,并且我的ListView项目没有被更新。我编辑了这篇文章。请看一下这是否对您有帮助。非常感谢这很容易理解,而且对我也有帮助:)
public class OrderHistory : INotifyPropertyChanged
{
    private bool _isAvailable;
    public bool IsAvailable {
        get
        {
            return _isAvailable;
        }
        set
        {
            if(_isAvailable != value)
            {
                _isAvailable = value;
                this.NotifyPropertyChanged();
            }
        }
    }
    public event PropertyChangedEventHandler PropertyChanged;
    private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}