2014-10-08 2 views
1

Я пытаюсь добавить пользовательский TriggerAction к нашему коду. Ниже приведен XAML фрагмент кода:Добавление собственного WPF TriggerAction

<Style x:Key="ToolBarButtonStyle" TargetType="Button"> 
    <Style.Triggers> 
     <EventTrigger RoutedEvent="PreviewMouseDown"> 
      <actions:MyAction /> 
     </EventTrigger> 
    </Style.Triggers> 
    ... 

MyAction определяется следующим образом:

public class MyAction: TriggerAction<DependencyObject> 
    { 
    protected override void Invoke(object parameter) 
    { 
     // Do something 
    } 
    } 

Однако, когда я запускаю код, я получаю следующее исключение:

1) данный объект должен быть экземпляром TriggerAction или производным типом.

Результирующий вариант: 'Добавить значение в коллекцию типа' System.Windows.TriggerActionCollection 'выбрал исключение.' Номер линии «29» и позиция линии «15».

Я запускаю Visual Studio 2010, ориентируясь на .Net 4.0. Какие-либо предложения?

ответ

1

Добавление любого TriggerAction под 'Event Trigger' стилей ожидает действий, чтобы быть типа

System.Windows.TriggerAction 

Ваше пользовательское действие 'My Action' использует

System.Windows.Interactivity.TriggerAction<T> (Generic Type) 

и, следовательно, эта ошибка. Вы можете попробовать следующее. Кажется, это работает в вашем случае.

<Button Content="Custom Action" Width="150" Height="50"> 
     <interact:Interaction.Triggers> 
      <interact:EventTrigger EventName="PreviewMouseDown"> 
       <actions:MyAction></actions:MyAction> 
      </interact:EventTrigger> 
     </interact:Interaction.Triggers>    
    </Button> 

Здесь взаимодействие - это дополнительный псевдоним для интерактивности. Дайте мне знать, если вам нужна дополнительная информация.

+0

Исправлены исключения (спасибо!). К сожалению, Interaction.Triggers не могут быть добавлены в стиль, поэтому это означает, что я должен добавить триггер в каждое место, где я использую кнопки. Ну что ж... – Dan

Смежные вопросы