2010-01-26 37 views
1

我希望能夠將我的列表視圖「更改」爲另一個控件。我在考慮將控件的可見性設置爲隱藏狀態,並且單擊按鈕時更改可見性。我必須以編程方式執行此操作嗎?或者我可以使用觸發器?我可以使用觸發器來更改控件

+0

複製http://stackoverflow.com/questions/535671/wpf-triggers – 2010-01-26 01:34:47

+0

其實這不是有關的DataTemplates可言。 – 2010-01-26 01:45:16

回答

2

你可以使用觸發器來改變一個ContentControl的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 Template="{StaticResource TestTemplate}"/> 

我敢肯定,它可以優化,但應該把你在賽道上。

0

您可以使用故事板和/或觸發器來做到這一點,沒有問題。只需爲要更改的元素設置可見性屬性的動畫。

0

爲了增加Muad'Dib的回答,另外一種方式來做到這一點是堆疊在彼此頂部的控制,然後褪色的不透明度在觸發來回。你也可以用VSM來做到這一點(創建一個ListboxVisible狀態和一個ListboxHidden狀態,或者任何更有意義的名字語義)

相關問題