Я пытаюсь создать настраиваемый элемент управления (это просто настраиваемая сетка, полученная из сетки, я хотел бы сохранить ее как сетку из-за нескольких других вещей, которые я хочу попробовать), мой вопрос: почему не t раскадровка работает, когда я пытаюсь запустить ее из 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; using 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
. Есть ли что-нибудь в производной сетке, что мешает событиям мыши? Вы пробовалиRoutedEvent="Grid.MouseRightButtonDown"
? - person sa_ddam213   schedule 12.04.2013PreviewMouseRightButtonDown
в вашем главном окне где-то, отменяя это. - person sa_ddam213   schedule 12.04.2013