Skip to content

Instantly share code, notes, and snippets.

View codebeaulieu's full-sized avatar

Dan Beaulieu codebeaulieu

View GitHub Profile
public App()
{
MainPage = new UserInterfaces.Dashboard();
}
public class Dashboard : ContentPageBase<ViewModels.Dashboard>
{
Grid _mainLayout;
// 1
Image _images;
Label _status;
// 2
public Dashboard()
public static class IObservableExtensions
{
public static TDisposable DisposeWith<TDisposable>(this TDisposable observable, CompositeDisposable disposables) where TDisposable : class, IDisposable
{
if (observable != null)
disposables?.Add(observable);
return observable;
}
public class Dashboard : ViewModelBase<Dashboard>
{
[DataMember]
public string Title
{
get { return "My Dashboard"; }
}
// 1
string _statusMessage;
[Register("AppDelegate")]
public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
{
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
global::Xamarin.Forms.Forms.Init();
DependencyService.Register<Interfaces.IRendererResolver, Services.RendererResolver>();
LoadApplication(new App());
public class RendererResolver : Interfaces.IRendererResolver
{
MethodInfo _cellRenderer;
public RendererResolver()
{
_cellRenderer = typeof(CellRenderer).GetMethod("GetRenderer", BindingFlags.Static | BindingFlags.NonPublic);
}
public object GetCellRenderer(BindableObject element)
protected override void OnCreate(Bundle bundle)
{
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate(bundle);
global::Xamarin.Forms.Forms.Init(this, bundle);
// add this line
DependencyService.Register<Interfaces.IRendererResolver, Services.RendererResolver>();
public class RendererResolver : Interfaces.IRendererResolver
{
MethodInfo _cellRenderer;
public RendererResolver()
{
_cellRenderer = typeof(CellRenderer).GetMethod("GetRenderer", BindingFlags.Static | BindingFlags.NonPublic);
}
public object GetCellRenderer(BindableObject element)
public interface IRendererResolver
{
object GetRenderer(VisualElement element);
bool HasRenderer(VisualElement element);
object GetCellRenderer(BindableObject element);
bool HasCellRenderer(BindableObject element);
}
// 1
public abstract class ContentPageBase<TViewModel> : ReactiveContentPage<TViewModel> where TViewModel : ViewModels.ViewModelBase<TViewModel>
{
// 2
protected Lazy<CompositeDisposable> ControlBindings = new Lazy<CompositeDisposable>(() => new CompositeDisposable());
// 3
bool _controlsBound = false;
// 4