After recently searching for a way to do this and finding nothing I thought I would share a solution. It involves using the ever useful AddHandler method on the UIElement you wish to detect the mouse down on and simply setting a flag. Job done.

It is worth noting that popups and child windows may appear on top of the UIElement which the handler is attached to.

Code Snippet:

this.AddHandler(UIElement.MouseLeftButtonDownEvent,
    new MouseButtonEventHandler(MainPageMouseLeftButtonDown), true);
this.AddHandler(UIElement.MouseLeftButtonUpEvent,
    new MouseButtonEventHandler(MainPageMouseLeftButtonUp), true);
void MainPageMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
    MouseDown = false;
}
void MainPageMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    MouseDown = true;
}

Sample App

Install Microsoft Silverlight