Привет, есть проблема с зачатием. Я работаю над профессиональным приложением, чтобы подсчитать несколько баллов. Я делаю это с C# / Xamarin.Forms. Я хочу управлять избранным, чтобы пользователь мог иметь ограниченный список оценок, чтобы быстрее находить свои избранные.
У меня есть 4 вкладки:
- Весь список оценок ==> переход к выбранный счет
- список избранных ==> также перемещается
- & 4.: здесь нет проблем
Поэтому я хочу, чтобы, когда пользователь добавляет / удаляет счет из списка избранного, это изменяется на первой и второй вкладках. На данный момент у меня есть это:
public static class FavoritesManager
{
public static ObservableCollection<string> FavoritesList = new ObservableCollection<string>();
// Indexer does not work because static class ==> this is one of the problems
// public bool this[string key] { get => this.Favs.Contains(key); }
}
// My ViewModel
public class ScoreListViewModel : ViewModelBase
{
// Each Category is a List<Score>. Score has 3 properties : string Title, string Detail, bool IsFavorite
public ObservableCollection<Category> Categories { get; set; }
public ScoreListViewModel()
{
this.InitializeCategories();
FavoritesManager.FavoritesList.CollectionChanged += OnFavoritesChanged;
}
// When favorites list has changed ==> event CollectionChanged
public void OnFavoritesChanged(object sender, NotifyCollectionChangedEventArgs e)
{
this.InitializeCategories();
}
public void InitializeCategories()
{
this.Categories = new ObservableCollection<Category>
{
new Category ("Cat1")
{
new Score("Foo", "Bar", FavoritesManager.FavoritesList.Contains("Foo"))
}
};
}
// Command used to add a favorite
public ICommand AddToFavorites => new Command<string>((fav) =>
{
FavoritesManager.FavoritesList.Add(fav);
});
}
Итак, у меня есть 2 вопроса:
Как избежать зависимости ViewModel от stati c класса FavoritesManager? Мне действительно нужен класс stati c или есть другой способ «поделиться» им в режиме реального времени с помощью разных представлений? Потому что, если я решу изменить управление фаворитами, когда в списке будет 30-40 баллов, это будет очень сложно ...
Есть ли способ избежать полной повторной инициализации список категорий каждый раз, когда я меняю только 1 вещь (1 любимую)? Я думаю, это в основном вопрос XAML / Binding ...
Спасибо за вашу помощь, Галактоза