是否可以使用Microsoft Automation UI单击WPF / WinForm应用程序上的标签控件

时间:2015-07-20 09:09:09

标签: c# wpf microsoft-ui-automation

在我们的应用程序中,我们有一个可点击的标签,它会弹出另一个窗口。我一直在阅读Microsoft自动化UI文档,但找不到我能够单击标签控件的方法。

我知道我不能使用Invoke Pattern,因为这只涉及Button控件。

以下是我们拥有的XAML代码

 <Label Name="LblCompleteOrdersCount" Content="{Binding CompleteOrders, Mode=OneWay}" Margin="434,45,0,0" Height="62" Width="170" Padding="0" HorizontalAlignment="Left" VerticalAlignment="Top" VerticalContentAlignment="Top" FontSize="56" FontWeight="Bold">
    <Label.InputBindings>
        <MouseBinding Command="{Binding Path=CompleteOrdersCommand}" MouseAction="LeftClick" />
    </Label.InputBindings>
 </Label>

2 个答案:

答案 0 :(得分:6)

我的提示是使用按钮。它派生自 ICommandSource 接口,因此您可以毫不费力地使用Command将Button与处理程序相关联。问问自己:Label提供的Button功能不是什么功能?好看?覆盖默认按钮的模板,您将获得相同的外观。只要您不利用Label的任何其他功能,我就会发现没有必要弄乱它。

答案 1 :(得分:3)

从我的角度来看,你有3个选项来解决这个问题:

  1. UI自动化方法覆盖组件的AutomationPeer ,并在您的案例中返回ButtonAutomationPeer。这里的一大优势是能够模拟所需的每个自定义行为。 Microsoft's docu进一步阅读
  2. 使用标签的 ClickablePoint ,并组合 Win32.dll (在实际鼠标上点击提供的坐标)。此解决方案不需要对您的应用进行任何更改,但面临以下缺点:如果您不自行构建正确的子例程,则无法同时自动执行多个应用程序。
  3. 正如Maximus 已经建议的那样,使用Button并使其看起来像标签。我同意他的观点,在我们的案例中它应该是一个有效的解决方法。