2016-02-19 3 views
0

Скажем, у меня есть очень простой XAMLДинамически скрыть WPF TabItem

<Window x:Class="WpfApplication2.MainWindow" 
     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" 
     xmlns:local="clr-namespace:WpfApplication2" 
     mc:Ignorable="d" 
     Title="MainWindow" Height="350" Width="525"> 
    <StackPanel> 
     <TabControl> 
      <TabItem Header="Tab 1" Visibility="Hidden"> 
       <TextBlock>shfsdjkfhksh jkfhd sfjdklh sfjdkh fjdkh fdjhf </TextBlock> 
      </TabItem> 
      <TabItem Header="Tab 2" Visibility="Hidden"> 
       <TextBlock>3807689vthvybhgthugbbjgkngoebt4uibn54</TextBlock> 
      </TabItem> 
     </TabControl> 
    </StackPanel> 
</Window> 

Если я просто установить видимость скрытой, содержание внутри этой вкладки не скрывает TabItem «s.

Есть ли способ скрыть заголовок и его содержимое вместе?

ответ

0

Вы можете сделать это, привязав Видимость к родительскому элементу управления. Если вы используете модель представления, вы можете привязать видимость к свойству в своей модели представления и использовать свойство как для TabItem, так и для TextBlock.

<StackPanel> 
    <TabControl> 
     <TabItem x:Name="tab1" Header="Tab 1" Visibility="Hidden"> 
      <TextBlock Visibility="{Binding Path=Visibility, ElementName=tab1}">shfsdjkfhksh jkfhd sfjdklh sfjdkh fjdkh fdjhf</TextBlock> 
     </TabItem> 
    </TabControl> 
</StackPanel> 
+0

Любая идея, что случилось с ' shfsdjkfhksh jkfhd sfjdklh sfjdkh fjdkh fdjhf' это не работает для меня. – hardywang

+0

Вы собираетесь сэкономить много головных болей, внедряя модель представления и привязывая к свойствам из вашей модели представления. Множество проблем в WPF упрощается благодаря модели представления. – HoboCannibaL

+0

Я знаю, мне нужно быстро доставить некоторые ПОС. В реальной работе я буду использовать PRISM. – hardywang

1

Если вы установите Visibility в Hidden для/активной вкладки, вам нужно выбрать другую вкладку, например,

<StackPanel> 
    <TabControl> 
     <TabItem x:Name="T1" Header="Tab 1" Visibility="Hidden" > 
      <TextBlock>1111111111111111111</TextBlock> 
     </TabItem> 
     <TabItem x:Name="T2" Header="Tab 2" IsSelected="True"> 
      <TextBlock>22222222222222222222222</TextBlock> 
     </TabItem> 
    </TabControl> 
</StackPanel> 

Вам не нужно, чтобы скрыть содержимое TabItem при условии, что TabItem скрыта и невыбранные.

+0

А как же я хочу скрыть оба? Тогда мне нечего выбирать. – hardywang

+0

@hardywang Затем установите 'Видимость' вместо' TabControl'. «TabControl» без каких-либо вкладок - очень странный дизайн. – Guttsy