私はカスタムコントロールを作成しようとしています(グリッドから派生した単なるカスタムグリッドです。他にも試したいことがいくつかあるため、グリッドのままにしたいと思います)、私の質問は、なぜストーリーボードがEventTrigger からトリガーしようとしているときに機能しますが、通常のトリガーでは正常に機能します。私のコードは次のとおりです。
<Style TargetType="{x:Type local:GridEx}">
<Setter Property="Width" Value="100" />
<Setter Property="Height" Value="100" />
<Style.Triggers>
<EventTrigger RoutedEvent="MouseRightButtonDown">
<BeginStoryboard>
<Storyboard >
<DoubleAnimation Storyboard.TargetProperty="Width" To="300" Duration="0:0:1" FillBehavior="HoldEnd" />
<DoubleAnimation Storyboard.TargetProperty="Height" To="300" Duration="0:0:1" FillBehavior="HoldEnd" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<Trigger Property="IsMouseOver" Value="True" >
<!--<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard >
<DoubleAnimation Storyboard.TargetProperty="Width" To="300" Duration="0:0:1" FillBehavior="HoldEnd" />
<DoubleAnimation Storyboard.TargetProperty="Height" To="300" Duration="0:0:1" FillBehavior="HoldEnd" />
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
<Trigger.ExitActions>
<BeginStoryboard>
<Storyboard >
<DoubleAnimation Storyboard.TargetProperty="Width" To="100" Duration="0:0:1" FillBehavior="HoldEnd" />
<DoubleAnimation Storyboard.TargetProperty="Height" To="100" Duration="0:0:1" FillBehavior="HoldEnd" />
</Storyboard>
</BeginStoryboard>
</Trigger.ExitActions>-->
<Setter Property="Effect" Value="{StaticResource LiftEffect}"/>
<Setter Property="RenderTransform">
<Setter.Value>
<TranslateTransform X="-1" Y="-1" />
</Setter.Value>
</Setter>
<Setter Property="Panel.ZIndex" Value="10" />
</Trigger>
</Style.Triggers>
</Style>
ユーザーがマウスの右ボタンを押したままにすると、アイデアは非常に単純です。グリッドのサイズを大きくしたいだけです。トリガー「IsMouseOver」から開始するとアニメーションが機能することはわかっていますが、マウスを押したままにしても何も起こりませんか?
いいえ、コメントの問題ではありません:P
カスタム コントロールはグリッドから派生します。
編集コードが追加されました
System.Windows を使用します。System.Windows.Controls を使用します。
namespace WPFCCLIB
{
public class GridEx : Grid
{
public static readonly RoutedEvent LeftMouseDoubleClickEvent = EventManager.RegisterRoutedEvent("LeftMouseDoubleClick",RoutingStrategy.Bubble,typeof(RoutedEventHandler), typeof(GridEx));
public event RoutedEventHandler LeftMouseDoubleClick
{
add { AddHandler(LeftMouseDoubleClickEvent, value); }
remove { RemoveHandler(LeftMouseDoubleClickEvent, value); }
}
static GridEx()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(GridEx), new FrameworkPropertyMetadata(typeof(GridEx)));
}
void RaiseLeftMouseDoubleClickEvent()
{
RoutedEventArgs newEventArgs = new RoutedEventArgs(GridEx.LeftMouseDoubleClickEvent);
RaiseEvent(newEventArgs);
}
}
}