I see two options, but both depend on your web control implementing some sort of collection for your values. The first option is to just use the control's collection instead of your private variable. The other option is to copy the control's collection to your private variable at run-time (maybe in the Page_Load event handler, for example).
Say you have web control that implements a collection of items, like a listbox. The tag looks like this in the source view:
<asp:ListBox ID="ListBox1" runat="server">
<asp:ListItem>String 1</asp:ListItem>
<asp:ListItem>String 2</asp:ListItem>
<asp:ListItem>String 3</asp:ListItem>
</asp:ListBox><br />
Then you might use code like this to load your private variable:
List<String> values = new List<String>();
foreach (ListItem item in ListBox1.Items)
{
values.Add(item.Value.ToString());
}
If you do this in Page_Load you'll probably want to only execute on the initial load (i.e. not on postbacks). On the other hand, depending on how you use it, you could just use the ListBox1.Items collection instead of declaring and initializing the values variable.
I can think of no way to do this declaratively (since your list won't be instantiated until run-time anyway).