View Model Helper Class

As per .NET and Xamarin Forms guidelines, ViewModels usually implement the INotifyPropertyChanged interface to inform the view of changes to the data model. This involves a lot of boilerplate, so Geocortex Mobile has a class, NotifyPropertyBase, which handles the boilerplate and simplifies your code.

The ViewModel of the progress bar custom component is a good example of this pattern.

using App1.Components;
using VertiGIS.Mobile.Composition;
using VertiGIS.Mobile.Composition.Views;
[assembly: ViewModel(typeof(ProgressBarComponentViewModel))]
namespace App1.Components
{
public class ProgressBarComponentViewModel : NotifyPropertyBase
{
private double _progress = 0;
private bool _workComplete = false;
public double Progress
{
get => _progress;
set => SetProperty(ref _progress, value);
}
public bool WorkComplete
{
get => _workComplete;
set
{
SetProperty(ref _workComplete, value);
OnPropertyChanged(nameof(WorkNotComplete));
}
}
public bool WorkNotComplete => !WorkComplete;
}
}

NotifyPropertyBase implements INotifyPropertyChanged for you and provides a helper function, SetProperty. This helper function will ensure that OnPropertyChanged is called if the value has changed and that the underlying field is set.

Relevant SDK Sample#

The Geocortex Mobile SDK Samples has an example of a breadcrumbs component that uses a viewmodel.