Ich habe eine Liste von Hyperlinks, die über eine ItemsControl
in etwa so:
<ItemsControl x:Name="SubMenu" Visibility="Collapsed">
<ItemsControl.ItemTemplate>
<DataTemplate>
<HyperlinkButton Content="{Binding Name}"
NavigateUri="{Binding Url}"
TargetName="ContentFrame"
Style="{StaticResource LinkStyle}"
/>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Style="{StaticResource LinksStackPanelStyle}"
VerticalAlignment="Center"
HorizontalAlignment="Left" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
Was ich tun muss, ist die Aufzählung der tatsächlichen Hyperlinks im Untermenü, etwa so:
foreach (UIElement child in SubMenu.Items) // this does not work!
{
HyperlinkButton hb = child as HyperlinkButton;
if (hb != null && hb.NavigateUri != null)
{
if (hb.NavigateUri.ToString().Equals(e.Uri.ToString()))
{
VisualStateManager.GoToState(hb, "ActiveLink", true);
}
else
{
VisualStateManager.GoToState(hb, "InactiveLink", true);
}
}
}
Das Problem ist, dass ich nicht scheinen, um einen Weg zu finden, um die tatsächlichen UI-Elemente in der ItemsCollection.Items aufzulisten.
Weiß jemand, wie man das macht oder wie man es umgehen kann?
Ich kann erwähnen, dass ich versuche, ein Menü und Untermenü zu erstellen, das die angeklickten Hyperlinks als eine Art Breadcrumb anzeigt.
U Das Beste wäre, wenn ich irgendwie an das Stackpanel herankäme, denn dieser Code scheint zu funktionieren:
foreach (UIElement child in LinksStackPanel.Children)
{
HyperlinkButton hb = child as HyperlinkButton;
if (hb != null && hb.NavigateUri != null)
{
if (hb.NavigateUri.ToString().Equals(e.Uri.ToString()))
{
VisualStateManager.GoToState(hb, "ActiveLink", true);
}
else
{
VisualStateManager.GoToState(hb, "InactiveLink", true);
}
}
}