2012-11-25 33 views
0

我有一个具有选项卡控件的用户控件。在每个标签中,我都声明了一些区域。导航到区域管理器区域中声明的选项卡控件的选项卡

<TabControl Style="{DynamicResource HomeScreenTabControlStyle}"> 
      <TabItem Header="home" 
        Style="{DynamicResource HomeScreenTabItemStyle}"> 
       <StackPanel Orientation="Horizontal"> 
        <StackPanel Name="BacklogPanel" Style="{DynamicResource FullLengthPanelStyle}" 
           prism:RegionManager.RegionName="{x:Static inf:RegionNames.FullLeftBoxRegion}"> 

        </StackPanel> 
        <StackPanel Orientation="Vertical"> 
         <StackPanel Name="ToDoPanel" Style="{DynamicResource HalfLengthPanelStyle}" 
            prism:RegionManager.RegionName="{x:Static inf:RegionNames.HalfTopBoxRegion}"> 

         </StackPanel> 
         <StackPanel Name="MeetingPanel" Style="{DynamicResource HalfLengthPanelStyle}" 
            prism:RegionManager.RegionName="{x:Static inf:RegionNames.HalfBottomBoxRegion}"> 

         </StackPanel> 
        </StackPanel> 
        <StackPanel Name="SprintPanel" Style="{DynamicResource FullLengthPanelStyle}" 
           prism:RegionManager.RegionName="{x:Static inf:RegionNames.FullSecondLeftBoxRegion}"> 

        </StackPanel> 

        <StackPanel Name="StoriesPanel" Style="{DynamicResource FullLengthPanelStyle}" 
           prism:RegionManager.RegionName="{x:Static inf:RegionNames.FullRightBoxRegion}"> 
        </StackPanel> 
       </StackPanel> 
      </TabItem> 
      <TabItem Header="sprints" 
        Style="{DynamicResource HomeScreenTabItemStyle}"> 
       <StackPanel Orientation="Horizontal"> 

        <StackPanel Orientation="Horizontal"> 
         <StackPanel Style="{DynamicResource FullLengthPanelStyle}" 
           prism:RegionManager.RegionName="{x:Static inf:RegionNames.SprintBacklog}"> 

         </StackPanel> 
         <StackPanel Orientation="Vertical"> 
          <StackPanel Style="{DynamicResource HalfLengthPanelStyle}" 
            prism:RegionManager.RegionName="{x:Static inf:RegionNames.PeopleOnSprint}"> 

          </StackPanel> 
          <StackPanel Style="{DynamicResource HalfLengthPanelStyle}" 
            prism:RegionManager.RegionName="{x:Static inf:RegionNames.SprintDetails}"> 

          </StackPanel> 
         </StackPanel> 
         <StackPanel Style="{DynamicResource FullLengthPanelStyle}" 
           prism:RegionManager.RegionName="{x:Static inf:RegionNames.SprintTaskBacklog}"> 

         </StackPanel> 

         <StackPanel Style="{DynamicResource FullLengthPanelStyle}" 
           prism:RegionManager.RegionName="{x:Static inf:RegionNames.SprintMyTasks}"> 
         </StackPanel> 
        </StackPanel> 

       </StackPanel> 
      </TabItem> 

目前导航到该HomeScreenView即时通讯做这样的事情...

_regionManager.RequestNavigate(RegionNames.ContentRegion, new Uri("/HomeScreenView", UriKind.Relative)); 

有什么我可以传递给区域经理,使其设置的短跑标签是标签导航到,而不是家庭标签?

感谢

回答

3

大概是最简单的方式就是让那些的TabItems的意见,以及。和TabControl的区域。所以你浏览到您的视图与TabControlRegion并可能在从INavigationAware接口OnNavigateTo方法,你能浏览到HomeTabItemView和SpritsTabItemView

public void OnNavigatedTo(NavigationContext navigationContext) 
    { 
     this.regionManager.RequestNavigate(RegionNames.TabControlRegion, new Uri(ViewNames.HomeTabItemView, UriKind.Relative)); 
     this.regionManager.RequestNavigate(RegionNames.TabControlRegion, new Uri(ViewNames.SpritsTabItemView, UriKind.Relative)); 
    } 

TabControlRegion

<Window x:Class="Onii.Vespa.UI.Shell.Desktop.Shell" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:Regions="clr-namespace:Microsoft.Practices.Prism.Regions;assembly=Microsoft.Practices.Prism" MinHeight="640" MinWidth="820" WindowState="Maximized"> 
<Grid Height="Auto"> 
    <TabControl TabStripPlacement="Top" Regions:RegionManager.RegionName="TabControlRegion" HorizontalContentAlignment="Left" Margin="0,3,0,20" /> 
</Grid> 

意见将是这样的:

<UserControl x:Class="MyNamespace.HomeTabItemView" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:prism="clr-namespace:Microsoft.Practices.Prism.Regions;assembly=Microsoft.Practices.Prism" 
mc:Ignorable="d" 
d:DesignHeight="300" d:DesignWidth="300"> 
<Grid> 
    <StackPanel Orientation="Horizontal"> 
     <StackPanel Name="BacklogPanel" Style="{DynamicResource FullLengthPanelStyle}" 
     prism:RegionManager.RegionName="{x:Static inf:RegionNames.FullLeftBoxRegion}"> 

     </StackPanel> 
     <StackPanel Orientation="Vertical"> 
      <StackPanel Name="ToDoPanel" Style="{DynamicResource HalfLengthPanelStyle}" 
      prism:RegionManager.RegionName="{x:Static inf:RegionNames.HalfTopBoxRegion}"> 

      </StackPanel> 
      <StackPanel Name="MeetingPanel" Style="{DynamicResource HalfLengthPanelStyle}" 
      prism:RegionManager.RegionName="{x:Static inf:RegionNames.HalfBottomBoxRegion}"> 

      </StackPanel> 
     </StackPanel> 
     <StackPanel Name="SprintPanel" Style="{DynamicResource FullLengthPanelStyle}" 
     prism:RegionManager.RegionName="{x:Static inf:RegionNames.FullSecondLeftBoxRegion}"> 

     </StackPanel> 

     <StackPanel Name="StoriesPanel" Style="{DynamicResource FullLengthPanelStyle}" 
     prism:RegionManager.RegionName="{x:Static inf:RegionNames.FullRightBoxRegion}"> 
     </StackPanel> 
    </StackPanel> 
</Grid> 

不要忘记设置TabItems标题文本。你可以做到这一点在shered TabItemStyle

<Style TargetType="{x:Type TabItem}"> 
    <Setter Property="Header" Value="{Binding Content.DataContext.TabHeaderText, RelativeSource={RelativeSource Self}}"/> 
    ... 

而在这之后很容易TabHeaderText属性添加到您的ViewModels为内TabControlRegion显示的视角。

+0

感谢你为此,我实际上解决了这个问题,在主屏幕后面的代码中实现Inavigation aware接口,然后在调用OnNavigatedTo时读出参数,然后根据从参数传入的参数设置活动选项卡区域经理。 – user1089599

相关问题