Я занимаюсь созданием настраиваемого элемента управления (его просто настраиваемая сетка, полученная из Grid, я хотел бы сохранить ее в виде сетки из-за нескольких других вещей, которые я делаю хочу попробовать), на мой вопрос, почему не история доска работы, когда я пытаюсь запустить его из EventTrigger, но прекрасно работает при нормальном триггером мой код ниже:WPF Custom Control EventTrigger Not Firing или Animation Not Working
<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>
идея довольно просто, когда пользователь удерживает нажатой правую кнопку мыши, я просто хочу, чтобы сетка увеличивалась в размере. Я знаю, что анимация работает, потому что, если я начинаю с Trigger «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);
}
}
}
Анимация работает отлично для стандартного 'Grid' есть что-нибудь в производном сетке, которая interferring с событиями мыши ?, вы пробовали 'RoutedEvent =" Grid.MouseRightButtonDown "'? –
Насколько я могу сказать, я не добавил ничего, что могло бы помешать:/Но в отношении того, что он работает в обычной стилизованной сетке, я видел, что он работает, возможно, поэтому я немного запутался почему он внезапно не работает. – Heinrich
Я просто установил производную сетку, и анимация прекрасно работает там, не могли бы вы отправить код из вашей производной сетки, имеет ли он свой собственный шаблон? –