2010-09-10 34 views
6

Trong Silverlight (và có lẽ WPF), khi tôi xác định một số System.Windows.Interactivity.Behavior<T> cho ví dụ: một ItemsControl, nhưGiới hạn hiển thị hành vi Silverlight/WPF

public class SomeAwesomaticBehavior : Behavior<ItemsControl> 
{ 
} 

nó sẽ xuất hiện trong trình soạn thảo XAML Visual Studio của (và có lẽ trong thiết kế quá) ngay cả đối với bình thường, không Items-Controls và ném ngoại lệ thời gian chạy khó chịu. Điều này trái với Thuộc tính được đính kèm sẽ chỉ xuất hiện cho các loại dự định.

Có cách nào hạn chế khả năng hiển thị đó không? Một số thuộc tính ma thuật có thể (mặc dù đó sẽ là một tuyên bố dư thừa)?

Nếu không có cách nào ngày hôm nay, tôi hy vọng sẽ có như vậy trong tương lai? Bởi vì nó chắc chắn làm lẫn lộn đồng nghiệp và người thiết kế khi nhiều Hành vi bật lên mà không có liên quan gì đến đối tượng hiện tại.

Cập nhật: Tôi đã gửi các mặt hàng hóa đơn.

Silverlight: http://dotnet.uservoice.com/forums/4325-silverlight-feature-suggestions/suggestions/1224253-restrict-behavior-visibility?ref=title

WPF: http://dotnet.uservoice.com/forums/40583-wpf-feature-suggestions/suggestions/1224259-restrict-behavior-visibility?ref=title

Trả lời

3

@HeRz bạn là chính xác, không có cách nào để lọc các hành vi theo loại nhắm mục tiêu của họ. Blend (và có lẽ là vs designer) sử dụng sự phản chiếu để tìm tất cả các kiểu mà bạn tạo ra được kế thừa từ kiểu hành vi cơ sở và hiển thị chúng trong danh sách tài sản.

Hỗn hợp sẽ ngăn bạn kéo hành vi hoặc kích hoạt vào mục không được dự định. Vì vậy, điều đó sẽ giúp ngăn chặn việc lạm dụng chúng.

Tôi thường cố gắng viết các hành vi như các đoạn mã có thể tái sử dụng, không bị scoped vào một trường hợp cụ thể. Họ chỉ đơn giản là công cụ với mục đích cụ thể.

+0

Chà, cuối cùng là câu trả lời sau tất cả những năm này, cảm ơn. Tôi đã nghi ngờ rằng không có cách nào. Tôi viết các hành vi tái sử dụng rộng rãi và rất chung chung, nhưng vẫn có một số trường hợp không phải lúc nào cũng có ý nghĩa đối với tất cả các loại 'DependencyObject'. Vì vậy, tôi nghĩ rằng tôi sẽ nộp một yêu cầu tính năng những ngày này. – herzmeister

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