2012-04-30 28 views
6

Tôi có một nút bên trong một mạng lưới có chứa nhiều nút và điều khiển khác như thế nàyViệc kích hoạt một nút cụ thể bên trong một mạng lưới người khuyết tật

<Grid IsEnabled="false"> 
    <Grid.ColumnsDefinition> 
     <ColumnDefinition/> 
     <ColumnDefinition/> 
     <ColumnDefinition/> 
    </Grid.ColumnsDefinition> 
    <Button Content="Run"/> 
    <Button Grid.Column="1" Content="Test"/> 
    <Button Grid.Column="2" Content="Cancel" IsEnabled="true"/> 
</Grid> 

Như bạn có thể nhìn thấy lưới bị vô hiệu hóa, nhưng các nút hủy bên trong nó được cho là được kích hoạt.

Vấn đề tôi gặp phải là mặc dù tôi đặt nút bên trong được bật, nó vẫn bị vô hiệu hóa, có thể do cha mẹ của nó bị tắt.

Có cách nào để ghi đè hành vi này và buộc nút được bật không?

Tôi đang sử dụng nó trong trường hợp có quá trình dài chạy trong nền, do đó, tất cả các thao tác UI ngoại trừ việc hủy quá trình sẽ bị tắt.

Cảm ơn!

Trả lời

2

No. Đặt IsEnabled thuộc tính thành hàng giả để vô hiệu hóa tất cả các yếu tố hình ảnh lồng nhau. Người ta nên nghĩ về nội dung của phần tử như là một phần của bản thể nó. Vô hiệu hóa phần tử có nghĩa là vô hiệu hóa tất cả các phần của nó.

Cách giải quyết dễ nhất là thay đổi đánh dấu để đáp ứng nhu cầu của bạn. Tôi thà mang Hủy nút ra khỏi Grid này vì vậy nó không bao giờ bị ảnh hưởng bởi IsEnabled tài sản của Grid

+3

mẫu mã tôi mang tới đây chỉ là một phiên bản đơn giản của một cấu trúc giao diện người dùng phức tạp hơn nhiều tôi có. Tôi biết giải pháp của bạn sẽ làm việc, nhưng nó có nghĩa là tôi sẽ có thể xử lý việc kích hoạt và vô hiệu hóa nhiều điều khiển anh chị em khác mà sẽ là một chi phí lớn cho một yêu cầu đơn giản. Tôi tự hỏi nếu có thể có một giải pháp khác. Cảm ơn! – Dror

+0

Giải pháp là sử dụng Lệnh và/hoặc MVVM – EvAlex

Các vấn đề liên quan