1

WPF Expander コントロールの ControlTemplate を作成しようとしていますが、Expanded 状態と Collasped 状態をアニメーション化しようとして障害にぶつかりました。

アプリケーションが最初に起動すると、Expanded 状態のアニメーションが 1 回トリガーされますが、その後はトリガーされません。

ここで何が起こっているのかわかりませんが、現在の 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>

(テストのためだけに偽の To 値をいくつか持っています。) 何が間違っていますか?

4

1 に答える 1

3

私の推測では、Collapsed (Collasped) のスペルミスです。

スペルミスが原因で、VSM がストーリーボードを見つけられない可能性があります。

于 2012-08-10T16:54:43.580 に答える