2015-07-20 13 views
5

W naszej aplikacji mamy klikalną etykietę, która wyświetli kolejne okno. Czytałem dokumentację interfejsu użytkownika Microsoft Automation i nie mogę znaleźć sposobu, w jaki mogę kliknąć kontrolkę etykiety.Czy można kliknąć Sterowanie etykietą w aplikacji WPF/WinForm przy użyciu Microsoft Automation UI

Wiem, że nie mogę użyć wzorca wywoływania, ponieważ dotyczy to tylko elementów sterujących przyciskami.

Poniżej znajduje się kod z XAML, że mamy

<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> 
+0

Co spowodowało, że wybrałeś etykietę zamiast przycisku? Jakieś specjalne funkcje ważą na rzecz Label? – Maximus

+0

@Maximus Etykieta służy do wyświetlania liczby pełnych zamówień, które mamy. Nasza firma potrzebowała sposobu, aby mogli łatwo zobaczyć liczbę kompletnych zamówień (i ich podsumowanie), aby mogli eksportować te zamówienia do arkusza Excel. – ChrisMcLellan

+0

I przycisk nie jest zdolny do tego? – Maximus

Odpowiedz

6

Moja wskazówka jest użycie przycisk. Zaczyna się od interfejsu ICommandSource, dzięki czemu można bez trudu użyć polecenia, aby powiązać Button z obsługą. Zadaj sobie pytanie: jaką funkcjonalność Etykieta zapewnia, że ​​przycisk nie działa? Lepsze spojrzenie? Zastąp domyślny szablon przycisku, a otrzymasz ekwiwalentny wygląd. Dopóki nie korzystasz z żadnej dodatkowej funkcjonalności Label, nie widzę sensu w tym.

2

Masz 3 opcje, aby rozwiązać ten problem z mojego punktu widzenia:

  1. UI Automation podejście jest ręcznym AutomationPeer z komponentu i zwracają ButtonAutomationPeer w Twoim przypadku. Dużą zaletą jest to, że można modelować każde niestandardowe zachowanie wymagane. Microsoft's docu do dalszego czytania
  2. Użyj ClickablePoint z etykiety i połączyć to z Win32.dll (na ogień rzeczywisty MouseClick na dołączonej współrzędnych). To rozwiązanie nie wymaga żadnych zmian w aplikacji, ale ma następującą wadę: nie będziesz w stanie zautomatyzować kilku aplikacji jednocześnie, jeśli nie stworzysz odpowiednich podprocedur na własną rękę.
  3. Jak już zasugerował Maximus użyj przycisku i spraw, aby wyglądał jak etykieta. Zgadzam się z nim, że powinno to być ważne obejście w naszym przypadku.
Powiązane problemy