It’s been a while since I’ve blogged any .NET stuff. At the moment I’m jumping around and wanted to share a few behaviors I made that I think can be useful or fun.
ZoomToSelectedBehavior – This is a very easy to setup behavior you put on any Selector. Once an item is selected a render transform is animated to perfectly size the selected element to the size of the Selector.
DistanceValueBehavior – This is my favorite. There’s been so many design situations where I simply wanted to apply an effect based on how far an element is to something else. This allows you to create things like parallax effects on a per-item in an ItemsControl. If you remember the ZuneHD had similar effects to really add some depth in the UI (like scrolling music lists, the “Play” icons would scroll faster). This is not a simple binding to a ScrollViewer’s Horizontal/VerticalOffset as not all situations you want to use this have ScrollViewers and that value does not take into account the “touch-pull-elastic-effect”. The behavior pumps out values of ~0 to ~1.0. Value converters are made to customize custom situations.
AncestorProviderBehavior – WPF has the ability to bind to an element’s ancestor based on type and other parameters. This was really useful in templated controls, where an element who’s property you wanted to bind to is out of the namescope. Store XAML doesn’t have this ability and none of the RelativeSource parameters fit all needs. This behavior allows you to bind to an ancestor element by Type, Name or Type and Name along with an ancestor level. I haven’t fully tested this one, but the demo seem’s to work.
Here’s the sample app and behaviors.