Like most software developers, especially those involved in UI work, I am used to working with a multi monitor setup. I have two Widescreen Dells in the Munkiisoft office but recently I needed to remote onto a client's development workstation. I was dreading the experience, until I found that Remote Desktop can be run to span multiple monitors.
This post describes how to run Remote Desktop so that it will span muiltiple monitos, essentially it is the “/span” command line switch that you need.
Great I thought but the experience was not what I hoped for because everytime I maximised a window it stretched across both monitors, boo! This is probably more annoying than just having it on a single monitor. Not wanting to give up, having come so close, I started Googling\Binging; I found SplitView. SplitView runs on the machine that you are remoting to and gives you proper multi-monitor support. Awesome, exactly what I was after.
As of 18/02/2010 this router does not work out-of-the-box with an Xbox 360,no matter what firmware version you have but there is a solution.
There are a couple of “me too” threads on forum.netgear.com that make for some depressing reading. However if you don’t want to wade through everyone saying “It doesn’t work for me either” jump straight to the solution. Many thanks to runDMB.
Basically the v5 router has issues automatically dishing out IP addresses to certain devices, it works for my work laptop, desktop, wireless music streamer and phone. The fix involves reserving an IP address for the MAC address of the 360
An intertesting event happened to me today. For the first time in over a year I read about something and though “cool, that is worth sharing”. The semantic marking up of Event data and what google is going to be doing with it.
I am currently working for a large “organiser of trade and consumer events” where we are in the process of building a CMS platform, on top of EPiServer, to enable the different events to have a compelling presence on the Internet. We often have to display Event data and from time to time I have looked at using Microformats but mainly ‘cos I thought that was the right thing to do not because i could see any really compelling use of them, until now.
Last year Google introduced “Rich Snippets”. Using microformats to signal particular datatypes Google could pull through that data and display it alongside the Site Title in the Google results
This image shows a search result displaying a Review, Google also added support for People and later Video. On Friday Google posted on the Webmaster Central Blog (an excellent read) that they are now supporting Event data. Whilst I am going to have to wait a while to get that on our official Product Backlog and I am going to mark this auspicious event (me posting a blog for the first time in over a year) with some Event mark-up.
Blog Post After a year in the wilderness (to be swiftly followed by another year) Pat Long blogs When: Jan 24, 10:40PM - 11:01PM
Where: Munkiisoft HQ, 322 Kingston Road, New Malden, Surrey Category: Blog post
So we all know of IE6 and the problem it can have have when you have multiple submit buttons on a form and you press enter in an edit control. IE6 gets confused over what button should be sent to the server as the submit button. This annoyance is covered here and here.
The issue I had recently was that even though I was directly clicking on a button (the search button on this page) ASP.NET was firing the code for the final button on the page (which in this instance was a "Finish" button). Once I realised that this is what was happening i took a look at the form that was being posted to the server. In the form variables collection I found both button elements! This is is an IE6 only issue and darn annoying.
The fix was to disable the unneeded buttons, which stops them being included as part of the form post. More specifically I hook the click event on all the input and button elements, of type "submit", on the page, when it first loads. Then when the click happens I disable all the button elements and reenable them using setTimeout after 2 seconds.
The only exception to this disabling is if it was a button that caused the click. That button is obviously not disabled.
You can see the solution on this page here http://www.ditto.net/Topics/MoviesMakeMeLaugh/fill in the function hookAllButtonsForDisabling().
Originally published on my old Charteris blog
This is part 6 of the training course originally described here with parts 2,3, 4 and 5 available here, here, here and here respectively. So far we have covered WPF fundamentals, XAML, brushes, shapes, controls, styling, resources and layout.
Part6
- Data
- Binding class
- Converter property
- ElementName property
- Mode property
- Path property
- RelativeSource property
- XPath property
- LAB12 - Databinding elements to each other
- DataContext
- DataProviders
- LAB13 - Binding to an ObjectDataProvider
- DataTemplates
- DataTemplateSelector
- ItemsControl
- Introduction
- ItemsSource property
- ItemTemplate property
- ItemsPanel property
- ItemContainerStyle
- LAB14 - Using ItemControl with ItemsSource, ItemsPanelTemplate, ItemsPanel, ItemContainerStyle and DataTriggers
Download Part6.zip which includes a slide deck and the 3 labs. Code to get you started with the labs is included.
Originally published on my old Charteris blog
Seeing as I blogged the Behind The Scenes look at Microsoft Surface I thought it only fair to give equal attention to this very funny (IMHO) tongue-in-cheek look at Microsoft Surface.
Microsoft Surface Parody on YouTube
Originally published on my old Charteris blog
Debugging layout issues is something I had to do fairly often particularly with some of the complex layouts we were trying in the past. Trying to work out why "such and such" FrameworkElement would not stretch to the size of "whatever" layout panel I was using.
Before we get to the detail of stretching there is one simple layout, debugging technique that I think is worth sharing; It is that setting the backgrounds of all the various panels that you are using, whilst debugging, makes life much easier. Take this relatively simple layout problem
Imagine if we are trying to find work out why the buttons "2" are not aligned to the bottom of the screen even though they have VerticalAlignment set to Bottom. Well colouring the different layout panels will as you can see make it easier to see what is constraining what.
From this you can see that is more than likely the PaleGoldenRod coloured panel that is causing the panel containing the "2" buttons to layout as they are.
Stretching - Bible
I know it is a little arrogant to suggest I could write a bible on anything but this was the most often referenced pieces of WPF information I had, on a previous project. I cover it in the upcoming Part5 of my WPF Training Course, but I thought it was useful enough to pull out here.
FrameworkElements have a default of Stretch for their HorizontalAlignment and VerticalAlignment but whether or not this stretching is performed all depends on the containing layout panel and how that Panel is being used. It is this information that I refer to as the "Stretching - Bible"
| Panel |
X Dimension |
Y Dimension |
| Canvas |
No |
No |
| Dock |
Yes |
Yes |
| StackPanel (Vertical |
Yes |
No |
| StackPanel (Horizontal) |
No |
Yes |
| Grid |
Yes* |
Yes* |
| WrapPanel |
No |
No |
* Except when using "Auto" rows and columns
Yes in the above table means "Children are stretched to available size"
No in the above table means "Children are their desired size"
I find myself referring back to this table whenever I am wondering why elements are not stretching even though I have set their alignment(s) to Stretch. Hope it helps someone else too.
Originally published on my old Charteris blog
This is part 5 of the training course originally described here with parts 2,3 and 4 available here, here and here respectively. So far we have covered WPF fundamentals, XAML, brushes, shapes, controls, styling and resources.
Again if anyone wants to contact me for clarifications or to talk over part of the course just use a Comment or the Contact link at the top of the page. Good luck!
The details of part 5 are below, the labs and any associated code are in the download package. LAB 11 is fairly important to get right and to understand why it is right. You may get something that looks close but it could be light years away from the correct solution, therefore I am going to include a completed solution as well. You don't have to use it but it is worth referring to when you have finished. Before starting Part5 I strongly suggest looking at parts 1 - 4 as this part really does draw on all the previous ones. If you think you know it all already at least review the contents of each part that I put in the blog post. If you are happy that you know the pre-reqs then great let's go!
Part5
- Margins and Padding
- Alignment
- Layout logic overview
- Height and Width
- Transforms
- RotateTransform
- ScaleTransform
- SkewTransform
- TranslateTransform
- RenderTransform vs LayoutTransform
- LAB10 - Adding Interactions with Triggers
- Dependency Properties Explained
- Attached Properties Explained
- Layout Panels
- StackPanel
- Grid
- UniformGrid
- DockPanel
- Canvas
- WrapPanel
- Stretching - Bible
- Z-Order
- LAB11 - Run dialog (LAB 11 is fairly important to get right and to understand why it is right. You may get something that looks close but it could be light years away from the correct solution, therefore I am going to include a completed solution in the download as well.)
Download Part5.zip which includes a slide deck and the 2 labs. Code to get you started with the labs is included.
Originally published on my old Charteris blog
For the last year or so I have been working on the Microsoft Health Common User Interface (CUI) project at Microsoft and today it was released here (www.mscui.com) and on here on CodePlex (http://www.codeplex.com/mscui).
The work released today comes from two areas of the ongoing work that Microsoft is doing in this area. First up is Design Guidance, this is a collection of best practice user interface guidance for clinical applications. Apologies for simply quoting the website but people smarter than me came up with the words so I might as well quote them
Design Guidance has been produced through a rigorous user-centred design process that incorporates primary and secondary research, usability testing, consultation with software providers and integrated hazard assessments. Patient Safety Assessments (PSAs) are continually performed to ensure the Design Guidance meets safety concerns.
The guidance is targeted at both existing clinical applications and those that are being designed and architected right now. The second part of this release is the implementation of much of that guidance in the form of control libraries for both WinForms 2.0 and ASP.NET. The website contains explanation and samples for each of the Web controls with the Codeplex project hosting a download of both the Winforms and the ASP.NET Control library.
The ASP.NET controls use much of ASP.NET Ajax and the extensions to that technology provided by the AjaxControlToolkit. There are some really handy controls on the site that I am sure you will find useful even if you are not working on clinical applications, take for instance the DateInputBox control.
Originally published on my old Charteris blog
This is part 4 of the training course originally described here with parts 2 & 3 available here and here respectively. So far we have covered WPF fundamentals, XAML, brushes, shapes, controls and control templating.
Again if anyone wants to contact me for clarifications or to talk over part of the course just use a Comment or the Contact link at the top of the page. Good luck!
The details of part 4 are below, the labs and any associated code are in the download package
Part4
- ResourceDictionaries
- Reusing XAML
- Why use a ResourceDictionary?
- Resource discovery
- File-based resource dictionaries
- LAB8 - Resources - Referencing System colours, Dynamic and Static
- Styles
- Referencing Styles
- TargetType
- BasedOn
- LAB9 - Debugging Styling Issues
- Triggers
- EventTrigger
- Property-based Trigger
Download Part4.zip which includes a slide deck and the 2 labs. Code to get you started with the labs is included.