Believe me. I searched the web not so long ago to find this information and couldn’t find anything complete. This article will try to document it.
I was using DataAnnotations to validate my classes before saving to Entity Framework 6 and tried to use IDataErrorInfo using the same validation attributes already in place instead of recreating them.
This seem simple but partial classes and the MetadataType attributes add some complexity to the task.
I made the demo so that even if you are not using the MetadataType and partial classes, you can still use this code presented in this article.
You can read this article from http://emoreau.com/Entries/Articles/2015/03/WPF-Using-IDataErrorInfo-on-a-class-exposing-validation-attributes-from-a-MetaData-class.aspx.
If you ever tried WPF (and Silverlight had the same issue) and had any kind of error in your binding, you know that it just fail silently. Of course you get a warning in your Output window but are you always looking there to see if something went wrong? I don't!
After I lost some time yesterday digging for an error that was finally only a typo in a command name, I started looking around for an easier way of debugging binding errors.
I found one that just shows a message box on the screen whenever a binding error occurs. In fact, it is just a listener filtering only for binding events.
So far, I have to say that I rather have a message box showing me that I mistyped the command name rather than searching for almost an hour.
This little gem can be downloaded from http://tech.pro/tutorial/940/wpf-snippet-detecting-binding-errors
Mercredi 11 mars à 10h00 heure de l’est (GMT-5), Guy Barrette animera le premier webinaire en français sur OzCode. Lors de ce webinaire, Guy vous montrera quelques-unes des meilleures fonctionnalités de OzCode. Vous apprendrez comment utiliser OzCode afin d’améliorer vos sessions de débogage et ainsi, trouver les erreurs et corriger beaucoup plus rapidement.
Pour vous inscrire, visitez http://blog.guybarrette.com/post/2015/03/04/Debogage-magique-avec-OzCode-webinaire-en-francais.aspx
We never get tired of free training!
The dotNetConf 2015 is another these free events and it is organized by Microsoft and the community. The virtual conference will be help March 18 & 19.
Visit the official web sites for all details and to (optionally) register at http://www.dotnetconf.net/
Lately, I have spoken at 2 Azure events in Montréal.
When preparing for the 2 events and while demoing in the 2 events, I created many Azure SQL Databases and Azure SQL Servers.
Now it is the time to cleanup not to use too much credits.
Azure SQL Databases are easily deleted using either the old portal (https://manage.windowsazure.com) or the new portal (https://portal.azure.com/).
But deleting Azure SQL Servers is another story. There is nothing (yet) letting you do it.
I searched and found that we need to use Azure PowerShell. You need to use Remove-AzureSqlDatabaseServer as shown in https://msdn.microsoft.com/en-us/library/dn546728.aspx. To install Azure PowerShell, check http://azure.microsoft.com/en-us/documentation/articles/install-configure-powershell/. If it is your first experiments with Azure PowerShell, you might want to have a look at http://michaelwasham.com/windows-azure-powershell-reference-guide/getting-started-with-windows-azure-powershell/.
Lately, I talked about Microsoft Azure in 2 events. When it is time to explain the different levels of services offered by Azure, I normally rely on this slide:
It not exactly clear for everybody. Yesterday, I showed the following slide (I don't even remember where I took it from) that makes a great analogy with pizza and everybody now understand.
And this morning, I was catching up on some .Net Rocks episode, and they mentioned a brand new "as a service" that I wasn't aware off!
If you have 10 minutes, go try http://foaas.com/ and have a good laugh!
I just learned about a free ebook from Microsoft Press in July 2014 that everybody interested in designing applications for Azure should read.
This book is Building Cloud Apps with Microsoft Azure: Best practices for DevOps, data storage, high availability, and more, by Scott Guthrie, Mark Simms, Tom Dykstra, Rick Anderson, and Mike Wasson.
And this book does not come alone! It comes with a great website called Building Real-World Cloud Apps with Azure.
This is a must see for any Azure enthousiast.
Now that I have started WPF, I need to rebuild and revisit some of the helpers I have built over the years.
A long time ago, back in January 2009, I wrote an article titled A custom MessageBox showing how to customize the Windows Forms MessageBox.
A few days ago, I needed a custom WPF MessageBox. Therefore, here is something to start you with if you ever need to customize your own.
You can read this new article from http://emoreau.com/Entries/Articles/2015/02/Custom-MessageBox-in-WPF.aspx.
A new free 246-pages ebook is now available from Microsoft: Fundamentals of Azure - Microsoft Azure Essentials.
Get the book details and download it from http://blogs.msdn.com/b/microsoft_press/archive/2015/02/03/free-ebook-microsoft-azure-essentials-fundamentals-of-azure.aspx
I just noticed that menus of many applications are opening on the wrong side. Have a look at the Calculator on a system not configured for lefty!
It was disturbing to me and I found why it does that. Apparently, Microsoft decided to do that on touch-capable devices. Now that I know the reason, I may understand why.
If you want to change this behavior, you can change the value of the MenuDropAlignment from the Registry (HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows) by setting it to 0.
Or if you would just like to change the behavior in your application (which is a bit strange when you compare to other apps on the same computer), you can use a little snippet like this one (taken from a C# WPF application - App.xaml.cs):
private static readonly FieldInfo _menuDropAlignmentField;
_menuDropAlignmentField = typeof(SystemParameters).GetField("_menuDropAlignment", BindingFlags.NonPublic | BindingFlags.Static);
System.Diagnostics.Debug.Assert(_menuDropAlignmentField != null);
SystemParameters.StaticPropertyChanged += SystemParameters_StaticPropertyChanged;
private static void SystemParameters_StaticPropertyChanged(object sender, PropertyChangedEventArgs e)
private static void EnsureStandardPopupAlignment()
if (SystemParameters.MenuDropAlignment && _menuDropAlignmentField != null)