繁体   English   中英

是否可以使用 Microsoft 自动化 UI 在 WPF/WinForm 应用程序上单击标签控件

[英]Is it possible to Click a label control on WPF/WinForm App using Microsoft Automation UI

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

我知道我不能使用调用模式,因为它只处理 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>

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

从我的角度来看,您有 3 个选项可以解决此问题:

  1. UI 自动化方法覆盖组件的 AutomationPeer并在您的情况下返回 ButtonAutomationPeer。 这里的一大优势是能够对所需的每个自定义行为进行建模。 微软的文档供进一步阅读
  2. 使用 Label 的ClickablePoint并将其与User32.dll结合(以在提供的坐标上触发实际的鼠标点击)。 - 有关更多详细信息,另请参阅 microsoft mouse_event function docu - 此解决方案不需要对您的应用程序进行任何更改,但面临以下缺点:如果您没有在其上构建适当的子例程,您将无法同时自动化多个应用程序你自己的,你必须注意保持应用程序在前台(你可以使用 User32.dll 中的ShowWindow 函数)。
  3. 正如 Maximus 已经建议的那样,使用 Button 并使其看起来像 Label 我同意他的观点,在我们的案例中这应该是一个有效的解决方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM