Gary,
I was able to get this working by looking at the built-in web part for inspiration (~\CMSWebParts\DataSources\LanguageDataSource.ascx.cs). This is what I used in the ASCX:
<cms:LanguageDataSource runat="server" ID="langs" />
<cms:BasicRepeater runat="server" ID="rep">
<ItemTemplate>
<%# Eval("CultureName") %> <%# Eval("Url") %><br/>
</ItemTemplate>
</cms:BasicRepeater>
And in the code behind:
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
langs.Node = DocumentContext.CurrentDocument;
List<DocumentCultureUrl> ds = langs.DataSource as List<DocumentCultureUrl>;
rep.DataSource = ds.OrderBy(x => x.CultureName).ToList();
rep.DataBind();
}