Для работы нужно сделать несколько изменений.
Первый и очень важный. Ваш класс Idea
необходимо изменить на используемый Properties
вместо общедоступного fields
, для этого вам нужно будет добавить getters и setters следующим образом:
public class Idea
{
public int ID {get; set;}
public string idea {get; set;}
public string Description {get; set;}
public string Type {get; set;}
public string Time {get; set;}
public bool HasFolder {get; set;}
public string FolderPath {get; set;}
public bool IsStarted {get; set;}
public bool IsComplete {get; set;}
public bool IsUploaded {get; set;}
public Idea(int iD, string idea, string description, string type, string time, bool hasFolder = false, string folderPath = null, bool isStarted = false, bool isComplete = false, bool isUploaded = false)
{
ID = iD;
this.idea = idea;
Description = description;
Type = type;
Time = time;
HasFolder = hasFolder;
FolderPath = folderPath;
IsStarted = isStarted;
IsComplete = isComplete;
IsUploaded = isUploaded;
}
}
Без этого изменения вы не сможете увидеть текст в списке, поскольку привязка этого требует.
Второе: это может быть опечатка, поскольку она точно не будет работать так.
изменение:
ideaso.ItemsSource = ideas;
для
Ideas.ItemsSource = ideas;
Будучи идеями, x: Name присвоило ListView в XAML.
Третье: изменить порядок вызовов в конструкторе.
public MainPage()
{
InitializeComponent();
GetIdeas(0); //get all ideas from the first table in the database
}
Метод GetIdeas
попытается получить доступ к ListView, и этот экземпляр создается при вызове метода InitializeComponent
. Вот почему обязательно вызывать этот метод перед попыткой доступа к любому элементу UIE в XAML.
Четыре:
XAML должен выглядеть так:
<ListView x:Name="Ideas" SeparatorColor="Accent" SeparatorVisibility="Default">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Frame BackgroundColor="Bisque" Padding="2" Margin="0,1,0,1">
<Label Text="{Binding idea}" VerticalTextAlignment="Center" FontSize="Small" HorizontalOptions="FillAndExpand"></Label>
</Frame>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Удалите лишние «идеи» в текстовой привязке и удалите ItemSource , так как вы уже устанавливаете это свойство в коде позади.
С этими изменениями вы должны увидеть список с вашим ideas
.
Существуют и другие изменения, которые вы можете сделать, чтобы сделать свой код немного более понятным MVVM, вы можете прочитать об этом подробнее здесь
Надеюсь, это поможет .-