I have a form with ListView with source in MVVM. The list isn't display, don't know why. Both form and MVVM are fairly simple so I really don't know why it doesn't work. Any ideas?
Here's my form's xaml:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="TestZXing.ScanPage">
<ContentPage.Content>
<StackLayout>
<ListView x:Name="lstProcesses"
ItemsSource="{Binding Items}"
VerticalOptions="FillAndExpand"
HasUnevenRows="True"
SeparatorVisibility="Default"
SelectedItem="{Binding SelectedItem}">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout Padding="10">
<Label
Text="{Binding Name}"
LineBreakMode="NoWrap"
Style="{DynamicResource ListItemTextStyle}"
FontSize="16"/>
<Label
Text="{Binding Description}"
LineBreakMode="NoWrap"
Style="{DynamicResource ListItemDetailTextStyle}"
FontSize="13" />
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<Button
x:Name="btnOpenProcess"
Text="OK"
Clicked="btnOpenProcess_Clicked"
/>
</StackLayout>
</ContentPage.Content>
</ContentPage>
And here's code behind:
public partial class ScanPage : ContentPage
{
ProcessInPlaceViewModel vm;
public ScanPage()
{
InitializeComponent();
List<Process> Pros = new List<Process>
{
new Process{ ActionTypeName="Awaria", CreatedOn=DateTime.Now, CreatedByName="Tomek"},
new Process{ ActionTypeName="Konserwacja", CreatedOn=DateTime.Now, CreatedByName="Dupa"}
};
vm = new ProcessInPlaceViewModel(Pros);
BindingContext = vm;
}
And MVVM:
public class ProcessInPlaceViewModel
{
public List<ProcessItem> Items = new List<ProcessItem>();
public ProcessInPlaceViewModel(List<Process> nItems)
{
ProcessItem pii = new ProcessItem { Id = 0, Name = "Nowy", Description = "Dodaj nowe zlecenie" };
Items.Add(pii);
foreach(Process p in nItems)
{
ProcessItem pi = new ProcessItem();
pi.Id = p.ProcessId;
pi.Name = p.ActionTypeName;
pi.Description = "Status: " + p.Status + ". Utworzono " + p.CreatedOn.ToString() + " przez " + p.CreatedByName;
Items.Add(pi);
}
}
private ProcessItem _selectedItem { get; set; }
public ProcessItem SelectedItem
{
get
{
return _selectedItem;
}
set
{
if(_selectedItem != value)
{
_selectedItem = value;
}
}
}
}