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

[スプリント]タブを[ホーム]タブではなく、移動先のタブに設定するために、リージョンマネージャーに渡すことができるものはありますか?

ありがとう

4

1 に答える 1

3

おそらく最も簡単な方法は、これらのTabItemからもビューを作成することです。そして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ヘッダーテキストを設定することを忘れないでください。あなたはシェレッドTabItemStyleでそれを行うことができます

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

その後、TabControlRegion内に表示されるビューのViewModelsにTabHeaderTextプロパティを簡単に追加します。

于 2012-11-25T22:17:58.897 に答える