Почему свойство Binding ItemSource не найдено в моей модели представления? - PullRequest
0 голосов
/ 02 марта 2020

У меня есть приложение Xamarin Forms, чтобы показать колоду карт. Deck инициализируется коллекцией stati c в классе App. (Точка останова показывает, что она заполнена). MainPage имеет MainPageViewModel, установленный как BindingContext:

Public MainPage(){
    InitilizeComponent();
    BindingContext = new MainPageViewModel()
}

MainPageViewModel имеет простое свойство для извлечения заполненного Deck.Cards:

public static IEnumerable<Card> Cards { get { return Deck.Cards; }}

Используется в коллекции Каруселей на главной странице.

Однако представление пусто! Я вижу

`[0:] Binding: свойство 'Cards' не найдено в 'mypackage.ViewModels.MainPageViewModel', целевое свойство 'Xamarin.Forms.CarouselView.ItemsSource'

Почему имущество не найдено? Это опубликовано c и IEnumerable.

Ответы [ 2 ]

1 голос
/ 02 марта 2020

Предполагая, что ваш Xaml в настоящее время имеет ItemsSource={Binding Cards}, затем сделайте Карты нестати c, и это будет работать.

Если вы хотите сохранить Карты в свойстве c, используйте x: Stati c:

ItemsSource={x:Static vm:MainPageViewModel.Cards}

И убедитесь, что вы объявляете пространство имен: xmlns:vm="clr-namespace:mypackage.ViewModels" в верхней части файла Xaml.

1 голос
/ 02 марта 2020

Измените это:

public static IEnumerable<Card> Cards { get { return Deck.Cards; }}

на это:

public ObservableCollection<Card> Cards{ get {return new ObservableCollection<Card>(Deck.Cards.ToList()); }}

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...