我发现代码使用面包屑而不是页面的导航按钮。此代码非常适合将页面设置为启动。我的问题是我需要一个带有框架控件的窗口作为启动,这导致面包屑根本不显示。我的造型似乎遗漏了一些东西。这些类型曾经是 NavigationWindow,但我将它们更改为 Frame 以尝试获得有效的解决方案。
<Style TargetType="Frame" x:Key="{x:Type Frame}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Frame">
<Grid Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="50"/>
<RowDefinition Height="50"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<ItemsControl ItemsSource="{Binding
RelativeSource={RelativeSource AncestorType={x:Type Frame}},
Path=BackStack}">
<!--Force the ItemsContol to use a wrap panel as Items host-->
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<local:InverseWrapPanel KeyboardNavigation.TabNavigation="Cycle"
KeyboardNavigation.DirectionalNavigation="Cycle"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Command="NavigationCommands.NavigateJournal"
CommandParameter="{Binding RelativeSource={RelativeSource Self}}"
Content="{Binding Name}">
<Button.Template>
<ControlTemplate TargetType="Button">
<WrapPanel>
<TextBlock Name="text1" FontWeight="Bold" Text="{TemplateBinding Content}"/>
<TextBlock Name="text2" FontWeight="Bold" Text=">>" Margin="2,0,0,0"/>
</WrapPanel>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="text1" Property="Foreground" Value="Blue"/>
<Setter TargetName="text2" Property="Foreground" Value="Blue"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Button.Template>
</Button>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<AdornerDecorator Grid.Row="2">
<ContentPresenter Name="PART_NavWinCP" ClipToBounds="true"/>
</AdornerDecorator>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>