For Anyone that is interested, I got this working using javascript.
protected void Page_Load(object sender, EventArgs e)
{
EnableMenuWidthMatching(divisionMenu);
}
private void EnableMenuWidthMatching(Menu menu)
{
string jsFunc = @"function setSubMenuWidth(elem)
{
var i;
//The menu gives TD items the ID in the form MenuNamenX
//where MenuName is the UniqueID of the menu control given in code, and X is the number of the menu assigned
if (elem.id != null && elem.tagName == 'TD')
{
//If you find a TD element with n, then...
var idIndex = elem.id.lastIndexOf('n');
if (idIndex > -1)
{
//Try to see if you can find a div with the same name but Items appended
var menuItems = document.getElementById(elem.id + 'Items');
//If you find it, that is the dropdown menus, set the width to the same
if (menuItems != null)
setAllChildWidths(menuItems, elem.offsetWidth);
}
}
//Recurse down through every child node
for (i = 0; i < elem.childNodes.length; i++)
setSubMenuWidth(elem.childNodes[i]);
}
function setAllChildWidths(baseElement, itemWidth)
{
//Set the current element width
if (baseElement.style != null)
baseElement.style.width = itemWidth;
//Loop through each child node
for (i = 0; i < baseElement.childNodes.length; i++)
{
//for some reason it would get stuck on elements with #text, so skip them
if (baseElement.childNodes[i].nodeName != '#text')
setAllChildWidths(baseElement.childNodes[i], itemWidth);
}
}
";
Page.ClientScript.RegisterClientScriptBlock(typeof(Page), "menuWidthSetting", jsFunc, true);
string jsOffset = "setSubMenuWidth(document.getElementById('" + menu.ClientID + "'));";
if (string.IsNullOrEmpty(menu.Attributes["onmouseover"]))
menu.Attributes["onmouseover"] = jsOffset;
else
menu.Attributes["onmouseover"] += ";" + jsOffset;
}