Kurz vorran Render auf Menu, sind Ihre Möglichkeiten sehr begrenzt. Das meiste von dem, was Sie brauchen würden, ist privat und versiegelt und Sie werden nirgendwo hinkommen.
Meine Lösung wäre, Vorlagen zu verwenden. Sie können MenuItem.Value oder Depth und ItemIndex verwenden, um jedes Element zu identifizieren und die erforderlichen Attribute bereitzustellen.
In Seite:
<asp:Menu ID="menu" runat="server" DynamicHorizontalOffset="2" StaticSubMenuIndent="10px">
<Items>
<asp:MenuItem Text="Item 1" Value="value 1">
<asp:MenuItem Text="Item 2" Value="value 2">
<asp:MenuItem Text="Item 3" Value="value 3"></asp:MenuItem>
</asp:MenuItem>
<asp:MenuItem Text="Item 4" Value="value 4">
<asp:MenuItem Text="Item 5" Value="value 5"></asp:MenuItem>
</asp:MenuItem>
<asp:MenuItem Text="Item 6" Value="value 6"></asp:MenuItem>
</asp:MenuItem>
<asp:MenuItem Text="Item 7" Value="value 7"></asp:MenuItem>
<asp:MenuItem Text="Item 8" Value="value 8"></asp:MenuItem>
</Items>
<StaticItemTemplate>
<asp:Panel runat="server" ForeColor='<%# GetItemColor(Container) %>'>
<%# Eval("Text") %> - <%# Eval("Value") %>
</asp:Panel>
</StaticItemTemplate>
<DynamicItemTemplate>
<asp:Panel ID="Panel1" runat="server" ForeColor='<%# GetItemColor(Container) %>'>
<%# Eval("Text") %> - <%# Eval("Value") %>
</asp:Panel>
</DynamicItemTemplate>
</asp:Menu>
In-Code (nie silliness diesen Codes nichts, ist es nur um das Prinzip zu demonstrieren):
public Color GetItemColor(MenuItemTemplateContainer container)
{
MenuItem item = (MenuItem)container.DataItem;
//identify based value
if (item.Value == "value 2")
return Color.Brown;
//identify based on depth and index
if (item.Depth == 0)
switch (container.ItemIndex)
{
case 0: return Color.Red;
case 1: return Color.Blue;
case 2: return Color.DarkGreen;
default:
return Color.Black;
}
else
switch (container.ItemIndex)
{
case 0: return Color.Purple;
case 1: return Color.Aqua;
case 2: return Color.DarkOrange;
default:
return Color.Black;
}
}
das funktioniert perfekt für das, wofür ich fotografiere. – CodeMonkey1313
Ich sehe nicht, wie dies seine "Hover" -Farbanforderung löst. Während das Steuerelement Panel eine ForeColor-Eigenschaft hat, hat es, wie Sie gezeigt haben, nichts wie onmouseover.Wenn Sie nur an den Farben des Standardmenüelements interessiert sind, können Sie Folgendes tun: –
Buggieboy
@Buggieboy wahrscheinlich diese Theorie auf anwenden ... –
clamchoda