I spent the weekend having a blast writing a WPF app that displays an interactive object graph, and detects/highlights circular dependencies. It was so much fun, that I decided to publish an article about it on CodeProject.

Due to user feedback, I created a sample that shows how you can use ContentControl3D to host content in the cells of the Infragistics XamDataGrid. I really like this idea, and think it has a lot of potential in many different kinds of applications. It allows you to compress a lot of information into one column in the data grid. The following screenshot from the demo app shows two records: one is showing the front side of a ContentControl3D, the other is showing the back side (the edit form)…

You can download this demo app from the Releases page of the Thriple project. The demo app requires that you have the Infragistics NetAdvantage for WPF product installed (trial version or regular version) in order to run it.

In response to a question about ContentControl3D, I added a new feature tonight. The scenario that the user asked about involves making several ContentControl3Ds rotate to the back or front side in response to the user selecting an option in the UI; not by clicking on each ContentControl3D. For example, suppose you have several ContentControl3Ds in a list, and you want to have them all rotate at once to show what’s on their back sides. The question was: how can one implement this, such that ViewModel objects associated with the ContentControl3Ds can cause the rotations to occur?

The user asked if I could make the read-only IsFrontInView dependency property read-write. Due to some complications around the semantics of that property, I could not take that approach. Instead, I added a RotationDestination enum, and allow the RotateCommand to accept a RotationDestination value as the command parameter. The new ‘Rotation Destination’ sample shows how to implement the requested scenario. For more information about why I took this approach, read the discussion thread that prompted this change.

You can download the latest Thriple source code, which includes ContentControl3D and the samples, here.

I recently published a new project on CodePlex called Thriple. It contains 3D components that you can easily add to your WPF user interfaces. As of version 1.0, Thriple contains my old Panel3D layout panel, and my new ContentControl3D. I have put a lot of time and effort into making ContentControl3D a highly reusable, customizable control. I’m very happy with how it turned out, but be sure to read the Known Issues section on Thriple’s Release page.

The source code download also contains sample applications that show the components in action. If you want to check it out, here’s the link: http://thriple.codeplex.com/