1
私はそれをダブルクリックすると、まだズームインしていない場合はズームしたいというユーザコントロールがあります。そうであれば、ダブルクリックがズームアウトされます。私はそれをコードの背後で動作させることができますが、私はxamlで動作するようにすることはできません。 そのハンドルのダブルクリックイベントの背後にあるコードを次に示します。その後、私のXAMLでトリガーアニメーション
void MyObjectMouseDoubleClick(object sender, MouseButtonEventArgs e)
{
if (IsZoomedIn)
{
IsZoomedIn = false;
//ZoomOutAnimation();
}
else
{
IsZoomedIn = true;
//ZoomInAnimation();
}
}
は:
<UserControl.RenderTransform>
<TransformGroup>
<RotateTransform />
<ScaleTransform />
<TranslateTransform />
</TransformGroup>
</UserControl.RenderTransform>
<UserControl.Style>
<Style>
<Style.Triggers>
<Trigger Property="local:MyObject.IsZoomedIn" Value="False">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="(UserControl.
RenderTransform).(TransformGroup.Children)[1].
(ScaleTransform.ScaleX)" To="1" Duration="0:0:.3" />
<DoubleAnimation Storyboard.TargetProperty="(UserControl.
RenderTransform).(TransformGroup.Children)[1].
(ScaleTransform.ScaleY)" To="1" Duration="0:0:.3" />
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
</Trigger>
<Trigger Property="local:MyObject.IsZoomedIn" Value="True">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="(UserControl.
RenderTransform).(TransformGroup.Children)[1].
(ScaleTransform.ScaleX)" To="2" Duration="0:0:.3" />
<DoubleAnimation Storyboard.TargetProperty="(UserControl.
RenderTransform).(TransformGroup.Children)[1].
(ScaleTransform.ScaleY)" To="2" Duration="0:0:.3" />
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
</Trigger>
</Style.Triggers>
</Style>
</UserControl.Style>
それは私のユーザーコントロールにズームインすると、ズームアウトアニメーションは動作しません。どんな助けもありがたい。
ありがとうございます。
ありがとうございます!しかし、私はまだあなたのコードがなぜ機能するのかをまだ理解していません。 EnterActionsはもっと「真実なら」、ExitActionsは「その他」のような感じがするので、それはそういう意味で「正しい」かもしれません。
ありがとうございました。 – jkidv
EnterActionsとExitActionsは、InitializeとDisposeによく似ています。何らかの理由で、トリガーの順序のために起こっているように見えます。何らかの理由でお互いにハンドオフすることができず、ストーリーボードは優先順位が高いためUIで値を強制します。ストーリーボードを使用して、それがなぜ機能していないのかを明確にコメントするのではなく、単一のトリガーに移動する、または出口アクションで各ストーリーボードを明示的に停止することで、ストーリーボードが修正されます。 http://msdn.microsoft.com/en-us/library/ms743230.aspx – rmoore