2015-09-11 3 views
0

В WPF как показать/скрыть TabItem в зависимости от значения переменной Int с помощью стиля?Используйте переменную, чтобы установить видимость TabItem

Стиль Покушение

<Style x:Key="TabItemStyleVisibility" 
     TargetType="{x:Type TabItem}" 
     BasedOn="{StaticResource {x:Type TabItem}}">    
     <Style.Triggers> 
      <DataTrigger Binding="{Binding Path=TabItemIndex, 
              Mode=OneWay, 
              UpdateSourceTrigger=PropertyChanged}" 
         Value="1"> 
       <Setter Property="Visibility" Value="Visible"></Setter> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 

TabItem Xaml:

<TabItem Name="Tab1" Style="{StaticResource TabItemStyleVisibility}"> 

Альтернативный Попытка

Возможно стиль для каждой вкладки (копирования/вставки) и изменить значение каждый раз:

<DataTrigger Binding="{Binding Path=TabItemIndex, 
           Mode=OneWay, 
           UpdateSourceTrigger=PropertyChanged}"     
      Value="1"> 
</DataTrigger> 

Но это не будет чистым (один стиль для каждого элемента).

Есть ли способ определить видимость tabItem в зависимости от имени tabItem или в зависимости от int и того же стиля для каждого TabItem?

+0

Откуда это значение? Это свойство в коде? –

+0

@MikeEason Да Я хочу установить переменную в коде. – Hao

ответ

1

Вы можете использовать конвертер, чтобы сделать это, вот пример того, как сделать это (непроверенные)

class MyConverter : IValueConverter //Implement this one 
{ 
    public object Convert(object state....) 
    { 
     string name = (string)state; 
     if(name == "something") 
      return Visiblity.Visible; 
     else return Visibilty.Hidden; 
    } 
} 

<Grid.Resources> 
    <myConverterNamespace:MyConverter x:Key = "myConverter"/> 
</Grid.Resource> 

    <TabItem Name="Tab1" Style="{StaticResource TabItemStyleVisibility}" 
Visbility={Binding ElementName="someTabItemName" Path="Name" Converter={StaticResource myConverter}}> 
-1

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

+0

Вы отвечаете на свой вопрос? Если это так, отметьте это как ответ (с большим количеством объяснений) или удалите весь вопрос. – OmegaMan

Смежные вопросы