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