2009-08-14 16 views
4

私は拡大し、その高さのプロパティをアニメーション化することによってItemsSourceを縮小するイメージにトリガを持ちたいと思います。WPFアニメーションを展開する - コントラクトの高さを

ObservableCollectionにバインドされた汎用のItemsSourceがあるため、このコントロールの高さの合計はわかりません。

イメージがクリックされると、イメージソースグリフが変更され、アイテムソースが展開されていることが示されます。もう一度クリックすると、ItemsSourceは現在のの高さから0に収縮し始めます。最初のアニメーションが完了しない可能性があるためです。

現在、私は、次の画像のトリガーがあります。それは一定の高さにアニメーション化するため

<Image Name="ExpandImage" Source="ArrowDown.png"> 
      <Image.Triggers> 
       <EventTrigger RoutedEvent="Image.MouseLeftButtonDown"> 
        <EventTrigger.Actions> 
         <BeginStoryboard> 
          <Storyboard> 
           <DoubleAnimation Storyboard.TargetProperty="Height"              
              Storyboard.TargetName="myItemsControl" 
              From="0" To="300" Duration="0:0:2" /> 
          </Storyboard> 
         </BeginStoryboard> 
        </EventTrigger.Actions> 
       </EventTrigger> 
      </Image.Triggers> 
     </Image> 

をこれは醜いです - 私はそれがItemsControlにの合計(未知の高さ)をアニメーション化する必要があります。また、一方向(拡張)アニメーションしかサポートしていません。

私のItemsControlは単純です:

<ItemsControl Name="myItemsControl" 
     ItemsSource="{Binding Items}" Height="0" > 
     <ItemsControl.ItemTemplate> 
      <DataTemplate> 
       <c:CustomUserControl/> 
      </DataTemplate> 
     </ItemsControl.ItemTemplate> 
    </ItemsControl> 

答えて

1

あなたは...よく、ActualHeightプロパティを持つコントロールの項目の実際の高さを得ることができます。問題はそれが依存プロパティではないということです。ただし、ケント・ブーガワートのようなアタッチされたビヘイビアを使ってバインドできます。this answerです。

実際の高さにバインドする必要があります。私はあなたに添付された動作を書くためにそれを残します。 :)

関連する問題