2015-07-20 11 views
5

Trên ứng dụng của chúng tôi, chúng tôi có nhãn có thể nhấp sẽ bật lên cửa sổ khác. Tôi đã đọc qua tài liệu Giao diện người dùng tự động hóa của Microsoft và không thể tìm thấy cách mà tôi có thể nhấp vào một điều khiển nhãn.Có thể bấm điều khiển nhãn trên ứng dụng WPF/WinForm bằng giao diện người dùng tự động hóa của Microsoft

Tôi biết rằng tôi không thể sử dụng Mẫu gọi vì điều này chỉ đề cập đến các nút điều khiển.

Dưới đây là mã từ XAML mà chúng ta có

<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

Điều gì khiến bạn chọn Nhãn thay vì Nút? Bất kỳ trọng số chức năng đặc biệt nào có lợi cho Nhãn? – Maximus

+0

@Maximus Nhãn được sử dụng để hiển thị số lượng đơn đặt hàng hoàn chỉnh mà chúng tôi có. Doanh nghiệp của chúng tôi cần một cách để họ có thể dễ dàng thấy số lượng đơn đặt hàng hoàn chỉnh (và một bản tóm tắt của từng đơn đặt hàng) để họ có thể xuất các đơn đặt hàng này thành một bảng tính nổi bật. – ChrisMcLellan

+0

Và nút không có khả năng này? – Maximus

Trả lời

6

gợi ý của tôi là sử dụng Nút. Nó xuất phát từ giao diện ICommandSource và do đó bạn có thể dễ dàng sử dụng Lệnh để liên kết Nút với trình xử lý. Hãy tự hỏi: chức năng nào mà một Nhãn cung cấp cho một Nút không? Nhìn đẹp hơn? Ghi đè mẫu nút mặc định và bạn sẽ có giao diện tương đương. Miễn là bạn không tận dụng được bất kỳ chức năng bổ sung nào của Label, tôi thấy không có điểm nào rối tung xung quanh nó.

2

Bạn có 3 lựa chọn để giải quyết vấn đề này từ quan điểm của tôi:

  1. UI phương pháp tự động hóaghi đè các AutomationPeer của thành phần của bạn và trả về một ButtonAutomationPeer trong trường hợp của bạn. Lợi thế lớn ở đây là nuôi ong có thể mô hình hóa mọi hành vi tùy chỉnh cần thiết. Microsoft's docu cho đọc thêm
  2. Sử dụng ClickablePoint của Label của bạn, và kết hợp nó với Win32.dll (để bắn mouseclick thực tế trên các tọa độ được cung cấp). Giải pháp này không yêu cầu bất kỳ thay đổi nào trong ứng dụng của bạn nhưng phải đối mặt với nhược điểm sau đây: bạn sẽ không thể tự động đồng bộ hóa nhiều ứng dụng cùng một lúc, nếu bạn không tự xây dựng các thói quen phụ thích hợp.
  3. Như đã đề xuất bởi Maximus sử dụng Nút và làm cho nó trông giống như một Nhãn. Tôi đồng ý với anh ta, rằng nó phải là một giải pháp hợp lệ trong trường hợp của chúng tôi.
Các vấn đề liên quan