Xamarin 为什么在我的ViewModel上找不到Binding ItemSource属性?
我有Xamarin表单应用程序来显示一副卡片。Xamarin 为什么在我的ViewModel上找不到Binding ItemSource属性?,xamarin,xamarin.forms,data-binding,Xamarin,Xamarin.forms,Data Binding,我有Xamarin表单应用程序来显示一副卡片。Deck由App类中的静态集合初始化。(断点显示它已填充)。MainPage将MainPageViewModel设置为绑定上下文: Public MainPage(){ InitilizeComponent(); BindingContext = new MainPageViewModel() } MainPageViewModel有一个简单的属性来检索填充的Deck.Cards: 公共静态IEnumerable卡{get{retu
Deck
由App
类中的静态集合初始化。(断点显示它已填充)。MainPage
将MainPageViewModel
设置为绑定上下文:
Public MainPage(){
InitilizeComponent();
BindingContext = new MainPageViewModel()
}
MainPageViewModel
有一个简单的属性来检索填充的Deck.Cards
:
公共静态IEnumerable卡{get{return Deck.Cards;}}
这在主页的旋转木马集合中使用
然而,视图是空的!我明白了
`[0:]绑定:在“mypackage.ViewModels.MainPageViewModel”的目标属性“Xamarin.Forms.CarouseView.ItemsSource”中未找到“Cards”属性。
为什么找不到财产?它是公共的、可数的。更改此选项:
public static IEnumerable<Card> Cards { get { return Deck.Cards; }}
公共静态IEnumerable卡{get{return Deck.Cards;}
为此:
public ObservableCollection<Card> Cards{ get {return new ObservableCollection<Card>(Deck.Cards.ToList()); }}
公共ObservableCollection卡{get{返回新的ObservableCollection(Deck.Cards.ToList());}
希望这有帮助。更改此选项:
public static IEnumerable<Card> Cards { get { return Deck.Cards; }}
公共静态IEnumerable卡{get{return Deck.Cards;}
为此:
public ObservableCollection<Card> Cards{ get {return new ObservableCollection<Card>(Deck.Cards.ToList()); }}
公共ObservableCollection卡{get{返回新的ObservableCollection(Deck.Cards.ToList());}
希望这能有所帮助。假设您的Xaml当前有
ItemsSource={Binding Cards}
,然后使卡片成为非静态的,它就会工作
如果要将卡保留为静态属性,请使用x:static:
ItemsSource={x:Static vm:MainPageViewModel.Cards}
并确保在Xaml文件的顶部声明名称空间:
xmlns:vm=“clr namespace:mypackage.ViewModels”
。假设Xaml当前有ItemsSource={Binding Cards}
,然后使卡成为非静态卡,它就会工作
如果要将卡保留为静态属性,请使用x:static:
ItemsSource={x:Static vm:MainPageViewModel.Cards}
并确保在Xaml文件的顶部声明名称空间:
xmlns:vm=“clr namespace:mypackage.ViewModels”
。Ah!原来的问题有一个致命的错误。该属性在MainPageViewModel上定义。很抱歉是定义中的x:Static属性修复了它(请参阅接受的答案),但投票支持了这一点-如果需要通知更改,集合应该是可观察的。啊!原来的问题有一个致命的错误。该属性在MainPageViewModel上定义。很抱歉是定义中的x:Static属性修复了它(请参见接受的答案),但投票支持了这一点——如果需要通知更改,则集合应该是可观察的。