2013-07-19 81 views
0

我有10個默認的WPF按鈕。WPF在按鈕上播放「點擊」動畫。模擬點擊代碼

在某些特定情況下,我必須模擬\播放動畫的點擊按鈕從我的視圖模型。 (在演示模式下應用,並向用戶演示其工作原理。)

我不知道如何模仿默認按鈕點擊,任何想法?

+0

只需調用方法? –

+0

@Viv我無法找到.Click();方法在一個按鈕... – Evgeny

+0

@Viv現在我明白了。如何在沒有任何特定MVVM庫的情況下從MVVM中激發這部分代碼?正如我所看到的只有一種方式來傳遞委託或查看實例。 – Evgeny

回答

2

您將需要UI自動化框架(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屬性綁定到我的viewmodel從代碼調用此動畫? – Evgeny

+0

我沒有看到公共屬性IsPressed。 – Evgeny

+0

嘗試將'Button.IsPressed'更改爲'IsPressed' – Nickon