I recently became aware of a construct in C# and ASP.NET that will solve all of your property binding problems. As a special case I'll examine how the Umbraco Macro is buggy in this regard.
Current Methods of Programmatically Specifying Control Properties
There are a few ways that everyone knows how to specify control properties at runtime in ASP.NET, with varying success. There's C#:
ctlMyControl.Property = "Property Value";
There's the data binding expression:
<asp:DataBoundControl Value='<%# Eval("DataItem")%>' />
These methods may not always work in your situation. Find out when they won't work and how to fix them by reading on...