WPF TabControl启动时未选择任何项目

时间:2016-05-25 08:48:13

标签: c# wpf mvvm tabcontrol

我正在使用WPF tabcontrol来显示从viewmodel绑定的项目。

默认情况下,启动时会选择列表的第一项,但我不希望在启动时选择任何项目。我可以将OnSelectionChanged事件中的SelectedItem设置为null,然后在启动时没有选择任何项目,但是不再可以手动选择项目。

public partial class ProjectScopeMain : Window
{
  private bool firstStart = true;

  public ProjectScopeMain()
  {
    this.Initialized += this.ProjectScopeMain_Initialized;
    this.InitializeComponent();
  }

  private void ProjectScopeMain_Initialized(object sender, System.EventArgs e)
  {
    this.TabControlSettings.SelectionChanged += TabControlSettingsOnSelectionChanged;
  }

  private void TabControlSettingsOnSelectionChanged(object sender, EventArgs e)
  {
      this.TabControlSettings.SelectedItem = null;
  }

  private void ButtonCreate_Click(object sender, System.Windows.RoutedEventArgs e)
  {
    this.Close();
  }
}

我的XAML代码。 SelectedIndex = -1不起作用

        <customControls:TabControl x:Uid="tabControlSettings" x:Name="TabControlSettings" 
                                   prism:RegionManager.RegionName="{x:Static infrastructure:RegionNames.ProjectScopeTabsRegion}" 
                                   TabStripPlacement="Left" Style="{DynamicResource TabControlStyle}" 

                                   ItemContainerStyle="{DynamicResource TabItemVerticalProjectScopeStyle}" SelectedIndex="-1"/>

2 个答案:

答案 0 :(得分:2)

我不相信选项卡控件可以让您没有选择任何内容。一个简单的解决方法是创建一个具有折叠可见性的空选项卡,并在您希望清除选项卡控件时导航到该选项卡。这将导致显示标签的内容(在这种情况下为空)并且不存在标题。

<TabControl Name="MyTabControl" SelectedIndex="0">
    <TabItem Header="" Visibility="Collapsed">
        <!--There's nothing here-->
    </TabItem>
    <TabItem Header="Item 1">
        <TextBlock Text="Some item 1" />
    </TabItem>
    <TabItem Header="Item 2">
        <TextBlock Text="Some item 2" />
    </TabItem>
</TabControl>

您可以通过以下方式“清除”它:

MyTabControl.SelectedIndex = 0;

由于您希望绑定子项,我想您首先需要在资源中组合子项。

答案 1 :(得分:1)

您可以通过将任何IsSelected属性设置为TabItem来取消选择任何false。一旦没有选择TabControl的内容,TabItem的内容将为空白。