2010-03-18 48 views
0

我在我的XAML代碼中有一個ItemsControl。當某些觸發器發生時,我想摺疊完整的itemsControl,所以所有的元素。XAML itemscontrol知名度

     <ItemsControl Name="VideoViewControl" ItemsSource="{Binding Videos}"> 
          <ItemsControl.ItemsPanel> 
           <ItemsPanelTemplate> 
            <WrapPanel ItemHeight="120" ItemWidth="160" Name="wrapPanel1"/> 
           </ItemsPanelTemplate> 
          </ItemsControl.ItemsPanel> 
          <ItemsControl.ItemTemplate> 
           <DataTemplate> 
            <views:VideoInMenuView /> 
           </DataTemplate> 
          </ItemsControl.ItemTemplate> 
         </ItemsControl> 

觸發:

 <DataTrigger Value="videos" Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}, AncestorLevel=1}, Path=DataContext.VideosEnable}"> 
        <Setter Property="ScrollViewer.Visibility" Value="Visible" TargetName="test1" /> 
        <Setter Property="ScrollViewer.Visibility" Value="Collapsed" TargetName="test2" /> 
<Setter Property="WrapPanel.Visibility" Value="Collapsed" TargetName="wrapPanel1" /> 
       </DataTrigger> 

當我添加的最後一個二傳手程序崩潰。 沒有這最後一個setter它工作正常,但沒有可見性變化....

這個代碼有什麼問題?用一個觸發器來摺疊ItemsControl的所有元素的寫入方法是什麼?

回答

0

如果你想隱藏整個的ItemsControl然後就隱藏ItemsControl的本身,而不是它的內部組件(的ScrollViewer和WrapPanel):

<ItemsControl.Style> 
    <Style TargetType="ItemsControl"> 
     <Style.Triggers> 
      <DataTrigger ...> 
       <Setter Property="Visibility" Value="Collapsed" /> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 
</ItemsControl.Style> 

這將簡單的設置可見性,以癱倒在ItemsControl的本身,這聽起來就像你想要的一樣。

+0

我已經做了的元素是不可見的了,但他們仍然可以用我找到了WPF的HitTest,我使用..和這是一個問題 當我設置ItemsControl的屬性hittestVisible爲false時,也設置itemcontrol的元素仍然可以找到與命中 – Sam 2010-03-18 15:01:59

+0

另外當我調試hittest我得到的ItemControl的對象,當我看着屬性的可見性的可見。 因此,當您將ItemsControl的屬性可見性設置爲摺疊時,只會更改itemscontrol的可見性,並且不會更改itemscontrol中項目的可見性。 ThereFore我需要現在如何設置所有項目控制元素的可見性,例如當itemscontrol的可見性設置爲崩潰時 – Sam 2010-03-18 15:08:31

0

我找到了解決方案:

我已將此添加到的ItemsControl的項目:

能見度=「{結合的RelativeSource = {的RelativeSource模式= FindAncestor,AncestorType = {X:類型的ItemsControl}}, Path = Visibility,Mode = TwoWay}「

在WPF hittest算法中,我檢查了visibility屬性是否合攏。

這不是一個很好的解決方案,但它爲我工作....

這是弗裏奇怪的是,如果你設置一個的ItemsControl的可見性屬性倒塌了項目的可見性屬性可見.. 。bug?

而且奇怪:則hitTest可以找到塌陷的對象......