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();
}