1

我正在嘗試爲WPF Expander控件創建一個ControlTemplate,但是我碰到了一個試圖爲Expanded和Collasped狀態設置動畫的路障。這個VisualStateManager爲什麼只觸發一次動畫?

當應用程序最初啓動時,我的Expanded狀態動畫會觸發一次,但在此之後不再觸發。

我不知道發生了什麼在這裏,但這裏是我的ControlTemplate目前看起來像:(我有一些虛假爲了只是用於測試值)

<ControlTemplate TargetType="Expander" x:Key="RightExpander"> 
     <Grid> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="Auto" /> 
       <ColumnDefinition Name="ContentColumn" Width="0" /> 
      </Grid.ColumnDefinitions> 
      <VisualStateManager.VisualStateGroups> 
       <VisualStateGroup x:Name="ExpansionStates"> 
        <VisualState x:Name="Expanded"> 
         <Storyboard> 
          <DoubleAnimation Storyboard.TargetName="Content" Storyboard.TargetProperty="(RenderTransform).(TranslateTransform.X)" To="-50" From="0" 
           Duration="0:0:0.3" /> 
         </Storyboard> 
        </VisualState> 
        <VisualState x:Name="Collasped"> 
         <Storyboard> 
          <DoubleAnimation Storyboard.TargetName="Content" 
Storyboard.TargetProperty="(RenderTransform).(TranslateTransform.X)" 
           To="50" From="0" Duration="0:0:0.3" /> 
         </Storyboard> 
        </VisualState> 
       </VisualStateGroup> 
      </VisualStateManager.VisualStateGroups> 
      <Border Grid.Row="0" BorderThickness="1" Panel.ZIndex="1" > 
       <Grid> 
        <ToggleButton IsChecked="{Binding IsExpanded, Mode=TwoWay, 
          RelativeSource={RelativeSource 
          TemplatedParent}}"></ToggleButton> 
        <ContentPresenter ContentSource="Header" 
          RecognizesAccessKey="True" 
          IsHitTestVisible="False" /> 
       </Grid> 
      </Border> 
      <Border Name="Content" Grid.Column="1" BorderThickness="0,1,1,1" 
       CornerRadius="0,5,5,0" Background="Pink" RenderTransformOrigin="0,0"> 
       <Border.RenderTransform> 
        <TranslateTransform X="0" Y="0" /> 
       </Border.RenderTransform> 
       <ContentPresenter Margin="4" /> 
      </Border> 
     </Grid> 
     <ControlTemplate.Triggers> 
      <Trigger Property="IsExpanded" Value="True"> 
       <Setter TargetName="ContentColumn" Property="Width" Value="{Binding 
        ElementName=Content, Path=DesiredSize.Width}" /> 
      </Trigger> 
     </ControlTemplate.Triggers> 
    </ControlTemplate> 

我在做什麼錯?

+0

哪裏的視覺狀態管理器代碼?除了聲明之外,我在模板中看不到任何對動畫的引用。你也拼寫錯了 - 你能發佈你的代碼嗎?啊 - 看到你模板化了現有的擴展器 - 難道只是拼寫錯誤? – Charleh 2012-08-10 16:50:44

回答

3

我的猜測是拼寫錯誤摺疊(Collasped)

也許VSM未發現因拼寫錯誤的故事板

+0

就是這樣!非常感謝! :d – 2012-08-10 17:03:39

相關問題