July 2010 Blog Posts

Easy form layout in WPF Part 1 – Introducing FormPanel

The WPF layout system is extremely powerful, there’s almost nothing you can’t do with Grid and maybe a few DockPanel objects – but that power comes at a price and that price is a lot of typing. I find it hard to believe that anyone who has written any form in WPF isn’t sick of  <RowDefinition Height="Auto"/> and Grid.Column=”1” Grid.Row=”1” – and of course things get worse when you have to add a new row at the beginning of the form and you have to manually update all those Grid.Row definitions. So, in this series I will try to solve the problem. Now...

Blogging Software Updated

I’ve just finished upgrading my blogging software to the latest version, you shouldn’t notice any difference. If you see any problems with the blog or the rest of the web site please e-mail me (the address is in the page footer) or use the contact form. Thanks

Give your application the Hollywood user experience with WPF

Have you ever noticed the completely ridicules UI of computers in movies and TV shows? You rarely see any windowing systems (but that’s ok, the hero never has to switch windows), the fonts and icons are huge (also ok, there’s never anything more complex than 3 text boxes and 2 buttons) except for lists that always display in a grid with 2 points font size (also ok, the hero never needs more than a second to scan the entire list). But it sure is dramatic, logging into a secure system looks like opening a...

yaTimer 2.6 Now an auto-update

If you have automatic updates enabled and you are running version 2.5 or later you should get the updated version of yaTimer within a week. If you can’t wait you can always click the “Check for updates” button located in the about window (accessed from the last option on the main menu) or the options window (Accessed from the bottom right of the main menu). There were a few problems with the last auto update – and the reason it has been a full week between yaTimer’s release and it’s availability as an automatic update is that I’ve...

WPF Adorners Part 4 – Simple and Powerful System for Using Adorners

This is Part 4 of a series, you may want to read part 1, part 2 and part 3 first. In the previous post I promised a cool-looking popup – so we’ll start with the screenshots and follow with the code to create them. We start with the same window-with-a-button we used in the first post in the series: But when we click the button we get a speech bubble popup! How did we do that? First, let’s look at the Window.xaml file: <Window x:Class="AdornerDemo.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:a="clr-namespace:AdornerDemo" Title="Window1" Height="300" Width="300"> ...

yaTimer 2.6 Released

I’ve just finished uploading yaTimer 2.6 to the server, this version is a free upgrade for all existing customers, you can download the new version from the upgrade page. What’s new in this version: You can now edit timing information for a task when its timer is running (you can edit everything except the start time and duration of the currently running timing event) – this is the most requested feature for this version. Open and closed groups on the task list are now saved when you close and reopen yaTimer. ...

WPF Adorners Part 3 – Adorners and Validation

This is part 3 of a series, you may want to read part 1 and part 2 first. Before we continue let’s take a quick look at WPF validation. Let’s add a property to our window class that will just not validate: public Window1() { DataContext = this; InitializeComponent(); } public string BadProperty { get { return "Bad"; } set { throw new Exception("Value must be \"Bad\""); } } And bind to this property: <TextBox VerticalAlignment="Center" HorizontalAlignment="Center" Width="150" > <TextBox.Text> <Binding Path="BadProperty" UpdateSourceTrigger="PropertyChanged"> ...