为什么在我的ViewModel上找不到Binding ItemSource属性



我有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()); }}

希望这能有所帮助。

最新更新