Display A Dialog From The ViewModel

In a previous blog post I discussed the problem of being in your ViewModel yet having to display a dialog to the user. You can’t interact with the page from the ViewModel, but you don’t want the logic of your program in the code-behind.

In that previous article, I demonstrated solving that problem using an event. In this blog post, Rodrigo Juarez and I will demonstrate three alternatives:

  • Using the Messaging System
  • Using Events (though here we’ll show a somewhat different approach)
  • Using dependency/service injection

There are significant problems with the first two; the most important of which is that they are difficult or impossible to write unit tests for. The third approach, however, is clean, efficient and very testable using a Mock service.

Continue reading
Posted in Essentials, Xamarin | Tagged , , | Leave a comment

CodeMash Xamarin.Forms Workshop

The code for the 1/2 day workshop at CodeMash is available here.  Thanks.

Posted in Essentials | 1 Comment

Happy Holidays to C Programmers

Not sure where I got this, but still like it:

 * find the important things in Life, the Universe, and Everything

typedef short	some;		/* some things are short */
typedef some	very;		/* some things are very short */

#define A			/* The first letter of the English Alphabet */
#define LINE	2		/* 2 points define a line */

#define TRUTH	BEAUTY		/* truth is beauty */
#define BEAUTY	10		/* and beauty is a 10 */

#define bad	char		/* burnt on both sides */
#define old	char		/* the great Chicago Fire */

#define	get	strlen		/* during your life, try to get some sterling */
#define youmake	float		/* you make it, I'll drink it */

#define		yourgoals	in terms you can understand
#include	"yourdreams"	/* for the future */

	/* everyone needs goals */

short	term;
double	yourpleasure();
double	yourfun;

long	Term, play(), agame;

	/* everyone needs diversions */

old *joke = "Why did the chicken cross the road?\n\tTo get to the other side!\n\t\tWocka Wocka Wocka!\n";

bad	*joke;		/* wait- you haven't heard it yet! */
	short laugh;	/* please */

	laugh = get(joke);
	write(1, joke, laugh);	/* write it down- don't say it */


	/* most folks like music */

long play(record)
long record;
	very pleasant = TRUTH;		/* if you like music */

	while (record == pleasant)

	return( pleasant );		/* music soothes the savage */

double	yourpleasure(one, way)		/* this is necessary if */
some	one;				/* is watching ,or if you have a */
long	way;				/* to go  */
		/* this can change one while maintaining one's identity */
	one = one * one;
	return( one );		/* after all, it should have at least doubled */

hold(temper)			/* good advice */
A short temper;			/* is a dangerous thing */
	A long	time;		/* is what you need */
	very calm;		/* is how you should be */

	calm = temper, temper;

	while (calm--)

	return(calm);		/* if possible */

	/* now, on to the main thing */

main(thing, mustbe)		/* to balance work, play, and goals */
some thing, mustbe;		/* important, or we wouldn't be here */

	long	time();		/* know C */
	very	bored;		/* the result of too few goals */

	short	hours;		/* make */
	long	yourwork;	/* which makes for */
	short	tempers;	/* which can be improved by */
	long	laughing;

	/* first, set priorities */
	yourwork = 0;
	yourfun = 1.0e+38;

	if (yourpleasure( mustbe, yourwork ))
		yourfun = yourwork;
		yourfun = play( agame );

	bored = yourfun - yourwork;  	/* nothing to do? */
					/* reach out and touch someone! */

	switch ( bored ) {	/* connects all of this together */
		hours = hold(LINE); /* no way to avoid it, take a */

		/* take a music break */
	while ( thing-- ) {	/* you make my heart sing */
		youmake everything;
		very groovy;

		/* focus on what is important to you */
	while ( yourfun < 0 ) {
		yourpleasure( mustbe, agame);
		yourfun = play( agame );


	exit( laughing );

Posted in Essentials | Leave a comment

Xamarin.Forms Fundamentals: MVVM

In my previous post we started with a blank Xamarin.Forms app and added manual data-binding.   That is, when a button was pressed, we assigned the value in an entry control to the text property of a label. 


Today we’ll look at a better way of doing that.  But hold on to your hat, and fasten your seat belt, because we’re going to dive into the deep end.   

Continue reading
Posted in Essentials | 3 Comments

Xamarin Fundamentals

In my previous (and first) posting on Learning Xamarin, I demonstrated how to create a pretty cool program out of the box.  Let’s back up now, and start with a blank app, and see what we can build from there.

Create a new project as described in the previous posting, but this time choose a Blank application.

Continue reading
Posted in Essentials | 1 Comment

I’m Back! With Xamarin.Forms Programming

It has been a few months since I’ve posted, and I hope you missed me as much as I missed you.  To re-launch this blog, I’ve decided to provide a series on Xamarin.Forms programming.  

If you prefer to learn by watching a video, check out this video course.

If you are new to Xamarin.Forms (and I’m assuming you are) then there is a lot to learn, but none of it is very difficult… ok some of it is, but not until you’re into very advanced topics.   The one thing you do need to know is C#. You don’t have to be an expert, but you do have to be comfortable with the language.

Continue reading
Posted in Essentials, MVVM, Programming, Xamarin, XAML | 2 Comments

TypeScript for C# Programmers – Slide deck

Here is a link to the slide deck for my presentation at NYC Code Camp.


Posted in Essentials | 1 Comment

MVVM Ping Pong

Here’s a problem I come across more often than I would have expected.  I want my buttons to use Commands in the View Model, but in response to the command, I have to interact with the user in a way that is much easier to do in the code behind.

Let’s take the example of a user pressing a button to delete a record.  The button calls a command in the ViewModel, but I want to show a confirmation dialog box in the view.  If the user affirms the deletion, I want to do the work back in the View Model.  Oy.

Continue reading

Posted in MVVM, Xamarin | Tagged , | 8 Comments

Yet Another Podcast #182: OzCode

OzCode is an extraordinary debugging tool for Visual Studio (Windows).  I’m joined by Omer Raviv, Creator and CTO of OzCode and Alon Fliess, Co-founder of CodeValue and Chief Architect at OzCode. Alon is a Microsoft Regional Director and an Azure MVP.

Posted in Essentials | Tagged | Leave a comment

Xamarin Quick Hit: Dimming a button to indicate it is disabled

I often have to dim a button to indicate that it is disabled, and I want to do that via data binding.

Continue reading

Posted in Essentials, Learning, Xamarin, XAML | Tagged | 2 Comments

Visual Studio for Mac – my newest Pluralsight Course


At the core of effective application development is a thorough knowledge of Visual Studio Mac. In this course, Visual Studio for Mac, you will learn how to work with VS Mac to produce enterprise-quality software. 
First, you will explore the IDE by taking an extensive tour. Next, you will learn how Visual Studio Mac supports source control; specifically Git. Finally, you will discover how Visual Studio Mac supports Azure. When you are finished with this course, you will have a foundational knowledge of this integrated development environment that will help you as you move forward to creating software.

Click here

Posted in ASP.NET Core, Essentials, Visual Studio, Xamarin | Tagged | Leave a comment

Learn to Program (From Scratch!)

John Papa and I have just released our new Play by Play on Learning To Program.   If you know of someone who has wanted to learn to code but didn’t know where to start, this might be a great option.

Posted in Essentials, Learning, Programming | 6 Comments