Attached Properties

Attached Properties are a WPF concept. They may be appended to Framework Elements where they are supported and appropriate. For instance, in the case of a Grid parent control, you may want to append the Grid.ColumnSpanProperty or Grid.RowSpanProperty onto one or all of its children.

In WPF-CPS, this may be accomplished via BeginSettings . . . EndSettings via the SetAttachedProperty method, like so, which below will set the column span property to 2 on any children that are Labels:

.SetAttachedProperty<Label, Grid>("ColumnSpan", 
myLabel => { myLabel.SetValue(Grid.ColumnSpanProperty, 2); })

The setting is stored as an Action<T> to be applied when BeginComposite . . . EndComposite gets called. You may set an attached property to be applied via Type or via Type at row-column. For instance, here is an example where a Z-Index Property is set on the child of a Canvas at a specific row-column position:

chain.SetAttachedProperty<K, T>("ZIndexProperty", row, column, 
obj => { obj.SetValue(Canvas.ZIndexProperty, zIndex); }); 

FYI, the propertyOnK parameter (1st parameter) should likely be unique and I believe it is only used in this case to comprise a part of the dictionary unique key. The Action<T> is stored internally via a dictionary key made up of the Type Name concatenated with propertyOnK parameter concatenated with underscore plus row plus underscore plus col. In the example above, propertyOnK is "ZIndexProperty".

Last edited Mar 26, 2014 at 5:31 AM by stagathome0069, version 17


No comments yet.