2016-05-25 17 views
1

私はWPF tabcontrolを使用して、ビューモデルからバインドされた項目を表示しています。WPF TabControl開始時に選択されていない項目

デフォルトでは、リストの最初の項目が選択されますが、開始時に項目を選択しないようにします。 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"/> 
+1

私はどんなmvvmも見ません - あなたのバインディングはどこですか? – blindmeis

+0

xamlに 'SelectedIndex'を-1に設定します – Tomtom

+0

TabControlではタブを選択できないとは思いません。ユーザーがタブをクリックするまで、コンテンツを非表示にする方法を実装する必要があるかもしれません – PlantPorridge

答えて

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; 

あなたが子項目をバインドしたいので、私はあなたが最初のリソースの子どもたちを結合する必要があります想像。

関連する問題