У меня есть вопрос о том, как я могу использовать общую ObservableCollection в двух ViewModels в WPF C #?
Я получил два представления, первое представление состоит из наблюдаемой коллекции категорий, используемых в выпадающем списке в той или иной форме.Второй вид - это окно, которое позволяет добавлять, редактировать и удалять категории.Теперь я извлекаю категории для обоих представлений по отдельности, но я хочу объединить и использовать общую наблюдаемую коллекцию, чтобы получать новые изменения при добавлении, изменении или удалении категорий во втором представлении.
Обе модели View и viewmodels контролируются основной моделью:
public viewModel1 viewModel1 { get; set; }
public ViewModel2 ViewModel2 { get; set; }
public MainViewModel()
{
this.InitializeCommands();
this.viewModel1 = new viewModel1();
this.ViewModel2 = new ViewModel2();
this.ViewModel2.OnChangedCategory += (s, e) =>
{
this.viewModel1.Categories = GetCategories();
};
}
ViewModel для View1:
public ObservableCollection<Categories> GetCategories
{
get
{
if (this._getCategories == null)
{
this._getCategories = methods.GetCategories();
}
return this._getCategories ;
}
set
{
if (this._getCategories != value)
{
this._getCategories = value;
this.OnPropertyChanged("GetCategories");
}
}
}
ViewModel для View2:
public ObservableCollection<Categories> GetCategories
{
get
{
if (this._getCategories == null)
{
this._getCategories = methods.GetCategories();
}
return this._getCategories ;
}
set
{
if (this._getCategories != value)
{
this._getCategories = value;
this.OnPropertyChanged("GetCategories");
}
}
}
Теоретически ониоба идентичных, просто две разные наблюдаемые коллекции в двух моделях представления, я хочу использовать одну и ту же наблюдаемую коллекцию в обоих представлениях, если это в первом или втором ViewModel не имеет значения.Но, может быть, это имеет больше смысла, если он находится в viewmodel 2. Скажем, если я решу иметь общую коллекцию категорий, наблюдаемую в ViewModel 2, как Viewmodel 1 может использовать эту наблюдаемую коллекцию из ViewModel 2 и по-прежнему синхронизироваться при изменениях?
Как я могу это сделать?