Sign in

Xamarin | iOS | Android Developer with 7 years of experience. All things actionable tips, real-life examples and coding guides to help you grow professionally.
Photo by Bruno Kelzer on Unsplash

Have you noticed that the more complex the UI is, the more repetitive code appears in the ViewModel? And especially, the code related to “live” properties is duplicated.

Despite the fact that refactoring is always challenging, you can start a ViewModel’s code clean-up by involving the PropertyChanged weaving library based on the tool called Fody.

Even if you are familiar with this library, the advanced usage section could still be helpful.

Our demo ViewModel contains FirstName, LastName and Email properties that are “live” properties, e.g., the PropertyChanged event should be invoked when any of these properties are changed.


Today, you will learn how to implement a pop-up dialog validation for Xamarin cross-platform apps. This post is based on a previous article about custom pop-up implementation, so be sure to check it out first:

We already have a sample authorization screen. To make this sample user-friendly, we need to block the Login button if the login or password is empty, and display the validation messages that describe why users cannot proceed.

When should these validation messages be shown?

The obvious answer is: always when the input field contains invalid data. But from the UX point of view, it would…

I was prompted to write this post about a universal storyboard layout in Xamarin.iOS by the issue at the MvvmCross repository. It turned out there was a question about displaying different Storyboards bound to one ViewModel, so I decided to describe my experience in solving this problem.

Apple’s recommended way of using SizeClass is not enough when we need entirely different UI/UX for the iPad and iPhone, and the most straightforward way to achieve it is to use different Storyboards with a single ViewModel.

This post will describe how to teach the MvvmCross framework to load a View Controller from…

Developers often create a [Dialog/Alert/Interaction]Service to display pop-ups in Xamarin cross-platform apps. This way is suitable and clean if we need to show an info message or ask the user simple questions with positive and negative answers. But what if we need some complicated UX like a login experience?

Of course, the existing pop-up service could be extended to have inputs and actions:

Demo pop-up service interface extended for more interaction

But think about the complexity of this service’s usage, especially if we need some validation that should be tested somehow.

How can we simplify these pop-ups?

We can use…

In my previous post about logging in Xamarin, I outlined what things need to be logged and how to log them in your mobile app.

The next important step is to ensure that the logging infrastructure follows the “Don’t repeat yourself” (DRY) and “Separation of concerns” (SoC) principles.

You can significantly reduce the long-term cost of codebase development and maintenance by using a simple logging API.

In this post, I will define the logging infrastructure implementation using MvvmCross, AppCenter, and Serilog in six steps:

  1. Define logging targets map
  2. Setup logging libraries
  3. Logging application events
  4. Logging core MvvmCross events (no action…

When the app is published, there is always a chance that unexpected issues will happen. In most cases, users will not be able to help, as they don’t know what details are important for developers and cannot explain what exactly happened with the app.

Moreover, users rarely tell developers that something went wrong while using the app. At best, the only information we get is a message that the user was working in the app, and it just closed, losing the user’s data. Today’s apps are complex, and it is difficult to answer, what led to incorrect app behavior.


Photo by Kevin Ku on Unsplash

Date and time is a significant thing. It appears everywhere, from sorting a library of photos to managing a schedule and selecting flights. Not all developers take this into account when working on their applications.

Have you ever encountered problems when your application displays the wrong date for some users? Or when users cannot understand what 03.02.2020 means? Or messages in your chat application coming from the future? Or does the file filter display files from the Bronze Age? If you have answered “yes” at least once, this post may be useful for you.

In the following sections, I will…

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store