2011-01-07 171 views
3

我創建了一個啓動頁面,它在應用程序運行時加載,但它也顯示我的tabcontrol(兩個用於編輯&圖形的Tabitems)。WPF C#在應用程序啓動時隱藏TabControl項目

如何在啓動時隱藏我的tabcontrol項目,並且只在用戶選擇文件 - >新建時才顯示它?

非常感謝!

的XAML:

<TabControl Height="Auto" Name="tabControl1" Width="Auto"> 
      <TabItem Header="Diagram" Name="DiagramTab"></TabItem> 
      <TabItem Header="Rulebase" Name="RuleTab" > 
       <Grid> 
       <TextBox Height="Auto" Name="RuleText" Width="Auto" Text="" AcceptsTab="True" AcceptsReturn="True" VerticalScrollBarVisibility="Auto" GotFocus="FocusChanged" KeyDown="ContentChanged" HorizontalScrollBarVisibility="Visible" /> 
       </Grid> 
      </TabItem> 
     </TabControl> 

這是我的文件 - >新建菜單項:

private void NewItem(object sender, RoutedEventArgs e) 
    { 
     ProcessNewCommand(); 
    } 

private void ProcessNewCommand() 
    { 
     if (dataChanged) 
     { 
      string sf = SaveFirst(); 
      if (sf != "Cancel") 
      { 
       ClearState();      
      } 
     } 
     else 
     { 
      ClearState(); 
     } 
    } 

風格:

<Style TargetType="TabItem" > 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="TabItem"> 
        <Grid> 
         <Border 
          Name="Border" 
          Background="LightBlue" 
          BorderBrush="Black" 
          BorderThickness="0" 
          CornerRadius="6,6,0,0" > 
       <ContentPresenter x:Name="ContentSite" 
          VerticalAlignment="Center" 
          HorizontalAlignment="Center" 
          ContentSource="Header" 
          Margin="12,2,12,2"/> 
         </Border> 
        </Grid> 
     <ControlTemplate.Triggers> 
         <Trigger Property="IsSelected" Value="True"> 
          <Setter TargetName="Border" Property="Background" Value="LightBlue" /> 
         </Trigger> 
         <Trigger Property="IsSelected" Value="False"> 
          <Setter TargetName="Border" Property="Background" Value="LightGray" /> 
         </Trigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
+0

你可以發表一些代碼。 – VoodooChild

+0

當然,補充! –

回答

1

在這些情況下,我通常有一個ProjectViewModel(或ProjectModel),作爲WindowDataContext被添加。 TabControl可能會將這些選項卡綁定到數據上下文中的項目。

public class ProjectViewModel : YourViewModelBase 
{ 
    public EditingViewModel Editor { ... } 

    public DiagramingViewModel Diagram { ... } 
} 

所以當NewCommand火災你會說this.DataContext = new ProjectViewModel()。下面的風格將照顧其餘的。

<Window.Resources> 
    <Style x:Key="HideWithoutDataContext"> 
     <Setter Property="UIElement.Visibility" Value="Visible" /> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding}" Value="{x:Null}"> 
       <Setter Property="UIElement.Visibility" Value="Collapsed" /> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 
</Window.Resources> 
<TabControl> 
    <TabItem Header="Start Page"> 
     ... 
    </TabItem> 
    <TabItem Header="Editor" 
      DataContext="{Binding Editor}" 
      Style="{DynamicResource HideWithoutDataContext}"/> 
    <TabItem Header="Diagram" 
      DataContext="{Binding Diagram}" 
      Style="{DynamicResource HideWithoutDataContext}"/> 
</TabControl> 
+0

通過修改我的風格,我已經有了這個工作(標籤現在隱藏在啓動時),但是我無法獲取文件 - >新將它們還原。很確定我沒有正確地做公開課部分... –

+0

我終於有機會坐下來試試這個了。工作很棒。非常感謝! –

0

您可以在選項卡的可見性屬性綁定到你的應用類別或無論你有什麼,只要用戶按下「新建」,你就只顯示標籤。

相關問題