I have just completed 10 day attack on Windows Presentation Foundation and after repeated false starts I have concluded I need to buy a book. In the age of Google search this may seem absurd to the average developer, however, after 8 days of trying to recreate a Windows Forms App (the other 2 days were actually useful) I am realizing I need to have a paradigm shift in my current mindset. Let us take the humble ListBox for example, the XAML would look something like this:
<ListBox> <ListBoxItem>Item 1</ListBoxItem> <ListBoxItem>Item 2</ListBoxItem> <ListBoxItem>Item 3</ListBoxItem> <ListBoxItem>Item 4</ListBoxItem> </ListBox>
So I thought that was it I *know* List Boxes in WPF … WRONG! This is not even scratching the surface my friends! Our capable WPF designers have broken the ListBox into its simplest forms. For example let us trying creating a list of Rectangles
<ListBox> <Rectangle Width="20" Height="20" Stroke="Yellow" StrokeThickness="4" ></Rectangle> <Rectangle Width="20" Height="20" Stroke="Blue" StrokeThickness="4" ></Rectangle> <Rectangle Width="20" Height="20" Stroke="Green" StrokeThickness="4" ></Rectangle> </ListBox>
or ellipses…
<ListBox> <Ellipse Width="20" Height="20" Stroke="Yellow" StrokeThickness="4" ></Ellipse> <Ellipse Width="20" Height="20" Stroke="Blue" StrokeThickness="4" ></Ellipse> <Ellipse Width="20" Height="20" Stroke="Green" StrokeThickness="4" ></Ellipse> </ListBox>
…or any combination of the above. It is a type agnostic list of items you want to show. I can also orient the flow of list boxes as I see fit…
<ListBox VerticalAlignment="Top"> <ListBox.ItemsPanel> <ItemsPanelTemplate> <VirtualizingStackPanel Orientation="Horizontal" IsItemsHost="True"/> </ItemsPanelTemplate> </ListBox.ItemsPanel> <Ellipse Width="20" Height="20" Stroke="Yellow" StrokeThickness="4" ></Ellipse> <Ellipse Width="20" Height="20" Stroke="Blue" StrokeThickness="4" ></Ellipse> <Ellipse Width="20" Height="20" Stroke="Green" StrokeThickness="4" ></Ellipse> </ListBox>
Can you see why I need a book, at a casual glance I thought I really knew what was going on with a simple drag and drop, but on closer inspection it is clear that I am missing some underlying goodness through my own poor ignorance.
WPF rocks!!!
Disclaimer The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.