2011-01-07 51 views
3

アプリケーションが実行されたときに読み込まれ、タブコントロール(&の編集用の2つのタブアイテム)も表示される開始ページを作成しました。WPF C#アプリケーションの起動時に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)が含まれており、DataContextが含まれています(Window)。 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

あなたはあなたのアプリケーションクラスにタブのVisibilityプロパティを結合することができますか、何を持っていても、ユーザがNewを押すとタブだけが表示されます。

関連する問題