2010-01-26 5 views
1

Я хочу, чтобы иметь возможность «изменить» мой список в другой элемент управления. Я думал о том, что видимость элемента управления скрыта, и когда нажата кнопка, измените видимость. Должен ли я делать это программно? Или я могу использовать триггер?Могу ли я использовать триггер для переключения между элементами управления

+0

duplicate http://stackoverflow.com/questions/535671/wpf-triggers –

+0

На самом деле речь идет не о DataTemplates. –

ответ

2

Вы можете использовать триггер, чтобы изменить свойство Template ContentControl, которое будет обертывать элемент управления, который вы хотите быть «изменчивым». Проверьте это:

Добавьте к ресурсам:

<ControlTemplate x:Key="BoxTemplate"> 
     <TextBox Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, 
         AncestorType={x:Type ContentControl}},Path=Content}" /> 
    </ControlTemplate> 

    <ControlTemplate x:Key="BlockTemplate" > 
     <TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, 
          AncestorType={x:Type ContentControl}},Path=Content}" /> 
    </ControlTemplate> 

    <ControlTemplate x:Key="TestTemplate" > 
     <StackPanel> 
      <CheckBox x:Name="Switch" /> 
      <ContentControl x:Name="MyContent" Template="{StaticResource BoxTemplate}" 
          Content="Data is unique!" /> 
     </StackPanel> 

     <ControlTemplate.Triggers> 
      <Trigger SourceName="Switch" Property="IsChecked" Value="True"> 
       <Setter TargetName="MyContent" 
         Property="Template" 
         Value="{StaticResource BlockTemplate}"/> 
      </Trigger> 
     </ControlTemplate.Triggers> 
    </ControlTemplate> 

проверить его с помощью другого ContentControl:

<ContentControl Template="{StaticResource TestTemplate}"/> 

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

0

Вы можете использовать Раскадку и/или триггер для этого, без проблем. Просто анимируйте свойства Видимости для элементов, которые вы хотите изменить.

0

Чтобы добавить к ответу Muad'Dib, вы можете сделать другой способ, чтобы складывать элементы управления друг над другом, а затем уменьшать непрозрачность в триггере. Вы также можете сделать это с помощью VSM (создать состояние ListboxVisible и состояние ListboxHidden или любое другое имя с большей семантичностью).

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