2013-07-19 3 views
0

У меня есть 10 кнопок WPF по умолчанию.WPF воспроизводит анимацию «Щелчок» на кнопке. Имитировать клик с кода

В некоторых конкретных случаях мне нужно эмулировать анимацию \ play, нажав кнопку на моей модели. (Приложение в демонстрационном режиме и демонстрация для пользователя того, как он работает.)

Я понятия не имею, как имитировать щелчок по умолчанию по умолчанию, любые идеи?

+0

Просто позвоните по методу? –

+0

@Viv я не могу найти .Click(); метод в кнопке ... – Evgeny

+0

@Viv теперь я вижу его. Как можно запустить эту часть кода из MVVM без каких-либо конкретных MVVM-библиотек? Поскольку я вижу только один способ передать делегат или просмотреть экземпляр. – Evgeny

ответ

2

Вам потребуется UI Automation Framework (System.Windows.Automation), чтобы быть в состоянии Нажмите на кнопку с помощью кода.

var element = AutomationElement.RootElement.FindFirst(
       TreeScope.Descendants, 
       new AndCondition(new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Button), new PropertyCondition(AutomationElement.NameProperty, "Start", PropertyConditionFlags.IgnoreCase)) 
      ); 
var pattern = (InvokePattern)element.GetCurrentPattern(InvokePattern.Pattern); 
pattern.Invoke(); 

Этот код нажмет кнопку запуска Windows из вашего приложения WPF. Вы можете искать кнопку в своем приложении таким же образом.

Необходимые материалы: UIAutomationClient, UIAutomationTypes

1

Если я понял, что вы хотите получить. Вы можете установить стиль по умолчанию для всех кнопок:

<Style TargetType="{x:Type Button}"> 
    <Style.Triggers> 
     <Trigger Property="Button.IsPressed" Value="True"> 
      <Trigger.ExitActions> 
       <BeginStoryboard> 
        <Storyboard> 
         ... 
        </Storyboard> 
       </BeginStoryboard> 
      </Trigger.ExitActions> 
     </Trigger> 
    </Style.Triggers> 
</Style> 
+0

Тогда я могу связать свойство IsPressed с моей моделью просмотра, чтобы вызвать эту анимацию из кода? – Evgeny

+0

Я не вижу публичное свойство IsPressed. – Evgeny

+0

Попробуйте изменить 'Button.IsPressed' на' IsPressed' – Nickon

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