我有Xamarin Forms应用程序来展示一副牌。Deck
是用App
类中的静态集合初始化的。(断点表示已填充(。MainPage
有一个MainPageViewModel
设置为BindingContext:
Public MainPage(){
InitilizeComponent();
BindingContext = new MainPageViewModel()
}
MainPageViewModel
有一个简单的属性来检索填充的Deck.Cards
:
public static IEnumerable<Card> Cards { get { return Deck.Cards; }}
这在主页面的旋转木马集合中使用。
然而,视图是空的!我看到
`[0]绑定:在'mypackage.ViewModels.MainPageViewModel'上找不到'Cards'属性,目标属性'Xamarin.Forms.CarouselView.ItemsSource'
为什么找不到该房产?它是公开的并且是IEnumerable。
假设您的Xaml当前具有ItemsSource={Binding Cards}
,那么将Cards设为非静态,它就会工作。
如果你想保持卡的静态属性,使用x:static:
ItemsSource={x:Static vm:MainPageViewModel.Cards}
并确保在Xaml文件的顶部声明名称空间:xmlns:vm="clr-namespace:mypackage.ViewModels"
。
更改此项:
public static IEnumerable<Card> Cards { get { return Deck.Cards; }}
到此:
public ObservableCollection<Card> Cards{ get {return new ObservableCollection<Card>(Deck.Cards.ToList()); }}
希望这能有所帮助。