Archive
Lovin’ WPF
Recently we’ve been moving more and more towards using WPF to deliver LOB applications (Line Of Business). It took me a while to persuade the team that WPF was something worth investing time and effort in, which is funny really because they normally jump at the chance to play with new technologies. So, how did I do it? Ironically – it was with a hugely trivial example; a status bar. Basically I showed them how the same code could be written in markup in two ways. The first one was:
<Window x:Class="WorkforcePF.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<DockPanel>
<StatusBar Name="statusBar1" Height="20" VerticalAlignment="Bottom"
DockPanel.Dock="Bottom">
<StatusBar.ItemsPanel>
<ItemsPanelTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="4*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition/>
</Grid.ColumnDefinitions>
</Grid>
</ItemsPanelTemplate>
</StatusBar.ItemsPanel>
<StatusBarItem>Ready</StatusBarItem>
<StatusBarItem Grid.Column="1" Content="StatusBarItem" />
</StatusBar>
</DockPanel>
</Window>
while the second one was:
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="StatusBarInWpf.Window1" x:Name="Window" Title="Window1" Width="640" Height="480"> <Window.Resources> <ItemsPanelTemplate x:Key="StatusBarItemTemplate"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="4*"/> <ColumnDefinition Width="Auto"/> <ColumnDefinition/> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition/> </Grid.RowDefinitions> </Grid> </ItemsPanelTemplate> </Window.Resources> <DockPanel> <StatusBar Height="20" DockPanel.Dock="Bottom" ItemsPanel="{DynamicResource StatusBarItemTemplate}"> <StatusBarItem Content="Ready" Grid.Column="0"/> <StatusBarItem Content="StatusBarItem" Grid.Column="1"/> </StatusBar> </DockPanel> </Window>
The thing I love about the second version is the way that the StatusBar template is removed from the actual implementation of the StatusBar, so you can move them into one place (currently in the Window.Resources but this could be put into a named template or the Application.Resources) and manage them really easily.
Going Perceptual: Ultimate Coder Challenge

Recent Posts
- Ultimate Coder – The pursuit of Bacon
- Ultimate Coder – Ma il Mio Mistero è Chiuso In Me
- Ultimate Coder – Week 3: Blog posting
- Ultimate Coder – Week 2: Blog posting
- Ultimate Coder: Going Perceptual – Week 1 Blog Posting.
- Altering my perception
- Of Mice and Men and Computed Observables. Oh my.
- Keeping it focused
- The rumours of my demise have been exaggerated.
- MoXAML goes Codeplex


