【发布时间】:2021-02-02 15:18:08
【问题描述】:
我正在开发一个抽认卡应用。我有这两种模型:Deck 和 Card。
甲板:
public class Deck
{
public int Id { get; set; }
public string Name { get; set; }
}
卡片:
public class Card
{
public int Id { get; set; }
public string Front { get; set; }
public string Back { get; set; }
}
在我的用户的 HomeViewModel 中,他们会在列表视图中看到他们的牌组列表。在每一行中,他们都会看到牌组的名称、牌组的数量,然后是一个按钮,可以选择研究、编辑或删除每个牌组。
我的问题是关于显示牌组的牌数。现在,我的 HomeViewModel 看起来像这样:
public class HomeViewModel : BaseViewModel
{
private int _count;
public int Count
{
get
{
return _count;
}
set
{
_count = Count;
OnPropertyChanged("Count");
}
}
private readonly IDeckManager _deckManager;
public CreateDeckViewModel _createDeckViewModel { get; set; }
public ObservableCollection<Deck> Decks { get; set; }
public HomeViewModel(CreateDeckViewModel createDeckViewModel, IAuthenticator authenticator, IDeckManager deckManager)
{
//Decks = all of the current users decks
_deckManager = deckManager;
Decks = new ObservableCollection<Deck>
(_deckManager.getDecks(authenticator.CurrentUser.Id).Result);
//the result comes in, but I must be binding incorrectly
foreach (Deck deck in Decks)
{
Count = _deckManager.getCardCount(deck.Id).Result;
}
_createDeckViewModel = createDeckViewModel;
}
}
我的 IDeckManager 与我的数据库进行交互并返回牌组中的牌数。
My View 有一个 ItemsSource 的 Deck。对于 Name 列,我只是使用
Text="{Binding Path=Name}"
但是由于 Deck 没有关于它拥有的卡片数量的属性,我不确定要绑定到什么。这是我目前的计数:
Text="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type viewModels:HomeViewModel}},
Path=Stuff, UpdateSourceTrigger=PropertyChanged, FallbackValue=500}"
我还尝试在 foreach 循环和转换器中使用当前 Deck 的 Id 调用 getCardCount 方法,但是转换器构造函数不能接受参数,因此我的 IDeckManager 的实例,我无法获取 foreach循环工作。
这里还有其他选择吗?提前致谢。
【问题讨论】: