如何使用多个选项卡控件,并能够使用按钮调用选定的选项卡控件

时间:2010-05-17 18:26:53

标签: c# wpf controls wpf-controls tabs

请我尝试将左边的每个按钮指定为自己的Tab控件。例如,当按下Intake表单按钮时,它将有自己的一组选项卡(它自己的tabcontrols)

我应该在画板上放置多个标签控件,还是有一种方法可以以编程方式更改标签的名称,还有内容,当按下左侧的按钮时?

提前谢谢。

这是一个链接hxxp://img709.imageshack.us/img709/554/tabcontrol.gif

这是迄今为止的代码

    <Window
 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
 x:Class="service.MainWindow"
 x:Name="Window"
 Title="MainWindow"
 Width="687" Height="480" mc:Ignorable="d">
 <Window.Resources>
  <Storyboard x:Key="OnLoaded1"/>
 </Window.Resources>
 <Window.Triggers>
  <EventTrigger RoutedEvent="FrameworkElement.Loaded">
   <BeginStoryboard Storyboard="{StaticResource OnLoaded1}"/>
  </EventTrigger>
 </Window.Triggers>

 <Grid x:Name="LayoutRoot" Margin="0,0,-16,1">
  <Grid.ColumnDefinitions>
   <ColumnDefinition Width="0*"/>
   <ColumnDefinition/>
  </Grid.ColumnDefinitions>
  <DockPanel Margin="8,8,0,7" LastChildFill="False" Grid.Column="1" HorizontalAlignment="Left" Width="660">
   <Menu VerticalAlignment="Top" Width="657" Height="32">
    <MenuItem x:Name="file" Header="File"/>
    <MenuItem x:Name="edit" Header="Edit">
     <MenuItem Width="100" Height="100" Header="MenuItem"/>
    </MenuItem>
    <MenuItem x:Name="view" Header="View"/>
    <MenuItem x:Name="preferences" Header="Preferences"/>
    <MenuItem x:Name="help" Header="Help"/>
   </Menu>
  </DockPanel>
  <TabControl x:Name="tabwin" Margin="137.224,46,19,7" Grid.Column="1">
   <TabItem x:Name="intakeformsub" Header="Elegibility Form">
    <Grid HorizontalAlignment="Left" Width="490"/>
   </TabItem>
   <TabItem Header="TabItem">
    <Grid/>
   </TabItem>
   <TabItem Header="TabItem">
    <Grid/>
   </TabItem>
   <TabItem Header="TabItem">
    <Grid>
     <Grid.ColumnDefinitions>
      <ColumnDefinition Width="0.567*"/>
      <ColumnDefinition Width="0.433*"/>
     </Grid.ColumnDefinitions>
    </Grid>
   </TabItem>
   <TabItem Header="TabItem">
    <Grid/>
   </TabItem>
   <TabItem Header="TabItem">
    <Grid>
     <Grid.ColumnDefinitions>
      <ColumnDefinition Width="0.735*"/>
      <ColumnDefinition Width="0.265*"/>
     </Grid.ColumnDefinitions>
    </Grid>
   </TabItem>
   <TabItem Header="TabItem">
    <Grid/>
   </TabItem>
   <TabItem Header="TabItem">
    <Grid/>
   </TabItem>
  </TabControl>
  <Grid x:Name="___buttontab" Margin="11.205,61,0,0" Grid.Column="1" HorizontalAlignment="Left" Width="122.019" VerticalAlignment="Top" Height="276">
   <Button VerticalAlignment="Top" Height="36" Content="Button"/>
   <Button Margin="0,40,0,0" Content="Oasis Assessments" VerticalAlignment="Top" Height="36"/>
   <Button Margin="0,80,0,0" VerticalAlignment="Top" Height="36" Content="Plan of Care"/>
   <Button Margin="0,120,0,0" VerticalAlignment="Top" Height="36" Content="Medication Profile" RenderTransformOrigin="0.421,5.556"/>
   <Button Margin="0,0,0,80" VerticalAlignment="Bottom" Height="36" Content="Clinical Notes"/>
   <Button Margin="0,0,0,40" VerticalAlignment="Bottom" Height="36" Content="Infection Control"/>
   <Button x:Name="intakeformbtn" VerticalAlignment="Top" Height="36" Content="Intake Form" Click="intakeform">
    <Button.BindingGroup>
     <BindingGroup/>
    </Button.BindingGroup>
   </Button>
   <Button VerticalAlignment="Bottom" Height="36" Content="Discharge Summary"/>
  </Grid>
  <ProgressBar HorizontalAlignment="Left" Margin="8,0,0,7" VerticalAlignment="Bottom" Width="104.795" Height="19" Grid.Column="1"/>
 </Grid>
</Window>

1 个答案:

答案 0 :(得分:0)

解决此问题的一种方法是使用另一个TabControl而不是按钮,但选项卡标题重新设置为按钮而不是标签。这样您甚至不必处理按钮更改。

请尝试以下代码:

<Window
 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
 x:Class="WpfApplication16.MainWindow"
 x:Name="Window"
 Title="MainWindow"
 Width="687" Height="480" mc:Ignorable="d">
    <Window.Resources>
        <Storyboard x:Key="OnLoaded1"/>

        <Style TargetType="{x:Type TabItem}" x:Key="TabButtonStyle">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type TabItem}">
                        <ToggleButton IsChecked="{Binding RelativeSource={RelativeSource AncestorType={x:Type TabItem}}, Path=IsSelected, Mode=TwoWay}"
                                                    Margin="10">
                            <ContentPresenter ContentSource="Header" />
                        </ToggleButton>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

    </Window.Resources>
    <Window.Triggers>
        <EventTrigger RoutedEvent="FrameworkElement.Loaded">
            <BeginStoryboard Storyboard="{StaticResource OnLoaded1}"/>
        </EventTrigger>
    </Window.Triggers>

    <Grid x:Name="LayoutRoot" Margin="0,0,-16,1">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="0*"/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <DockPanel Margin="8,8,0,7" LastChildFill="False" Grid.Column="1" HorizontalAlignment="Left" Width="660">
            <Menu VerticalAlignment="Top" Width="657" Height="32">
                <MenuItem x:Name="file" Header="File"/>
                <MenuItem x:Name="edit" Header="Edit">
                    <MenuItem Width="100" Height="100" Header="MenuItem"/>
                </MenuItem>
                <MenuItem x:Name="view" Header="View"/>
                <MenuItem x:Name="preferences" Header="Preferences"/>
                <MenuItem x:Name="help" Header="Help"/>
            </Menu>
        </DockPanel>
        <TabControl Margin="0,61,0,0" Grid.Column="1" ItemContainerStyle="{StaticResource TabButtonStyle}" TabStripPlacement="Left">
            <TabControl.Items>
                <TabItem Header="Button">
                    <Grid>
                        <TabControl x:Name="tabwin">
                            <TabItem x:Name="intakeformsub" Header="Elegibility Form">
                                <Grid HorizontalAlignment="Left" Width="490"/>
                            </TabItem>
                            <TabItem Header="TabItem">
                                <Grid/>
                            </TabItem>
                            <TabItem Header="TabItem">
                                <Grid/>
                            </TabItem>
                            <TabItem Header="TabItem">
                                <Grid>
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="0.567*"/>
                                        <ColumnDefinition Width="0.433*"/>
                                    </Grid.ColumnDefinitions>
                                </Grid>
                            </TabItem>
                            <TabItem Header="TabItem">
                                <Grid/>
                            </TabItem>
                            <TabItem Header="TabItem">
                                <Grid>
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="0.735*"/>
                                        <ColumnDefinition Width="0.265*"/>
                                    </Grid.ColumnDefinitions>
                                </Grid>
                            </TabItem>
                            <TabItem Header="TabItem">
                                <Grid/>
                            </TabItem>
                            <TabItem Header="TabItem">
                                <Grid/>
                            </TabItem>
                        </TabControl>
                        <ProgressBar HorizontalAlignment="Left" Margin="8,0,0,7" VerticalAlignment="Bottom" Width="104.795" Height="19" Grid.Column="1"/>
                    </Grid>
                </TabItem>
                <TabItem Header="Oasis Assessments">
                    Foo
                </TabItem>
                <TabItem Header="Plan of Care">
                    Bar
                </TabItem>
                <TabItem Header="Medication Profile">
                </TabItem>
                <TabItem Header="Clinical Notes">
                </TabItem>
                <TabItem Header="Infection Control">
                </TabItem>
                <TabItem Header="Intake Form">
                </TabItem>
            </TabControl.Items>
        </TabControl>
    </Grid>
</Window>