A year has passed since the official announcement of C#9, and finally came the moment when we actually decided to update it on our Xamarin project!
This post is not about C#9 features, but about the upgrade process. To learn more about the features, refer to the official announcement:
The first part of the update is to reference C#9 in every project of the solution.
Before starting, make sure you use the latest versions of IDEs, as there was a problem building for C#9 in Rider: https://youtrack.jetbrains.com/issue/RIDER-58915
Then make an update in every
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.
Even if you are familiar with this library, the advanced usage section could still be helpful.
Our demo ViewModel contains
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:
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.
You can significantly reduce the long-term cost of codebase development and maintenance by using a simple logging API.
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.
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…