我正在尝试更改我在可观察集合中拥有的对象的协调。我正在使用 MVVM 模型,并且在我的 MainViewModel 中我正在创建一个可观察的集合。在另一个视图模型中,我希望访问这个可观察的集合,但是我得到了错误:
An object reference is required for the non-static field, method, or property
我的问题是,当我将可观察集合更改为静态时,我得到一个新错误,因为我将可观察集合添加到我的应用程序的方式。那么有没有办法解决静态部分并访问可观察的集合?
创建我的 Observable 集合的代码:
public ObservableCollection<CastleViewModel> CastlesInPlay { get; set; }
CastlesInPlay = new ObservableCollection<CastleViewModel>
{
(Adding parameters for CastlesInPlay)
};
我希望在其中访问我的可观察集合的代码:
MainViewModel.CastlesInPlay[0].... = ...;
MainViewModel.CastlesInPlay[0].... = ..;
这两个类都是 ViewModels,但是当我将 castleInPlay 添加到我的视图中时,我会在我的视图代码后面添加它们:
private void AddCastle(CastleViewModel castleVM)
{
canvasCountries.Children.Add(new CastleUserControl() { DataContext = castleVM });
}
private void RemoveCastle(CastleViewModel castleVM)
{
canvasCountries.Children.Remove(canvasCountries.Children.Single(x => ((x as CastleUserControl).DataContext as CastleViewModel) == castleVM));
}
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
MainViewModel vm = ((MainViewModel)DataContext);
vm.CastlesInPlay.ToList().ForEach(x => AddCastle(x));
vm.AddCastleAction = x => AddCastle(x);
vm.RemoveCastleAction = x => RemoveCastle(x);
}