A while back I started work on a custom 3D WPF Panel, that uses a viewport3D to host items. I wanted my custom Panel to be equally at home as a standalone Panel or as replacement for the standard StackPanel that is often seen within ItemsControl. I also wanted the following functionality from my 3D Panel
- The user is able to tab around the items using CTRL+TAB
- The 3D Panel would not show all items in 3D space, but rather would show a viewable window, such that it saved memory. Its my own kind of virtualization
- The 3D Panel would allow items to have reflection or not
- The 3D Panel would raise an event with the current FrameworkElement, when the user stopped tabbing, which could then be used to show in a custom control that I also wrote
I have managed to achieve this, but not without the help of not just 1 but 2 WPF heavy hitters. It would not have been possible without Josh Smith or Dr WPF, both of whom have been excellent in supporting this article. Josh for his original Adorner idea, which was used to to host the viewport3D. Although I don’t use this any more, it was still a cool idea, so thanks Josh. And Dr WPF, for his excellent ConceptualPanel, that allows children to be neither Logical or Visual, by the use of a clever (very clever) disconnected list of FrameworkElements.
It appears that this little idea of mine truly got people thinking as it not only inspired me but it also inspired Josh and Dr WPF to create their own articles over at codeproject. Both Josh and I are using something from Dr WPF article.
Here are the links to both Joshs and Dr WPFs articles
- Josh Smith : Animating Interactive 2D Elements in a 3D Panel
- Dr WPFs : Conceptual Children: A powerful new concept in WPF
- Sacha Barber : 3D Tabbing Panel
This article has been a huge challenge and I believe represents some of the finest work that I have done, though like I say I would not have been able to do this without Dr WPFs ConceptualPanel, which is truly brilliant. So make sure to check that out.
Here is a video of my 3D tabbing Panel in action
I would suggest waiting for the ENTIRE video to finish streaming then watch it. It will make most sense that way.
Here is a link to the full WPF 3D Tabbing Panel article
Oh and THANKS Dr WPF, I owe you one big style. If you ever need a tour guide in London, I’m your man.