2010-03-30 66 views
1

我发现代码使用面包屑代替我的页面的导航按钮。此代码适用于将页面设置为启动。我的问题是,我需要有一个窗口框架控制作为启动,这导致面包屑根本不显示。我似乎错过了我的造型。这些类型曾经是NavigationWindow,但是我将它们改为了Frame以尝试获得工作解决方案。WPF导航页面Breadcrumb

<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> 

回答

1

变化:

<ItemsControl ItemsSource="{Binding 
         RelativeSource={RelativeSource AncestorType={x:Type Frame}}, 
         Path=BackStack}"> 

到:

<ItemsControl ItemsSource="{Binding 
         RelativeSource={RelativeSource TemplatedParent}, 
         Path=BackStack}"> 

其应该工作。