Khi nào tôi nên sử dụng FrameworkPropertyMetadata hoặc UIPropertyMetadata trên PropertyMetadata thuần túy?


81

Khi nhìn vào tính chất mẫu kèm theo và hành vi, tôi đã nhìn thấy một mớ hỗn độn của sử dụng của FrameworkPropertyMetadata, UIPropertyMetadataPropertyMetadata. Vì tất cả chúng đều tạo thành một hệ thống phân cấp kế thừa, làm cách nào để tôi chọn cái nào để sử dụng?

Câu trả lời:


80

Các lớp này là để báo cáo một số khía cạnh hành vi của một thuộc tính phụ thuộc.

Kiểm tra các lớp khác nhau để biết các tùy chọn mà chúng cung cấp.

Ví dụ,

nếu bạn chỉ muốn sao lưu một thuộc tính theo dp và cung cấp một giá trị mặc định, hãy sử dụng PropertyMetadata,

nếu bạn muốn chỉ định hành vi hoạt ảnh, hãy sử dụng UIPropertyMetadata,

nhưng nếu một số thuộc tính ảnh hưởng đến nội dung cấp khung wpf, ví dụ như bố cục phần tử, bố cục mẹ hoặc kết hợp dữ liệu, hãy sử dụng FrameworkPropertyMetadata.

Thông tin chi tiết bạn có thể kiểm tra trên msdn http://msdn.microsoft.com/en-us/library/ms751554.aspx


2
Câu hỏi thực sự là, tại sao đoạn mã propdp sử dụng UIPropertyMetadata, đặc biệt là vì không có lớp con PropertyMetadata nào trong Silverlight? Nó khiến tôi phát điên.
Grank

6
Đó là vì các đoạn mã giống nhau được chia sẻ giữa WPF và Silverlight. Bạn có thể thử các đoạn mã khác nhau cho silverlight từ liên kết này: blog.nerdplusart.com/archives/silverlight-code-snippets
gp.

2
MSDN nói "Nói chung, bạn nên sử dụng FrameworkPropertyMetadata, đặc biệt nếu thuộc tính của bạn có bất kỳ tương tác nào với hệ thống thuộc tính và các chức năng WPF như bố cục và liên kết dữ liệu." - (Chỉ định siêu dữ liệu) msdn.microsoft.com/en-us/library/ms751554.aspx
Wayne Bloss 28/10/11

FrameworkPropertyMetadata nên sử dụng loại ràng buộc dữ liệu nào? Tôi chỉ đơn giản là muốn một thuộc tính được ràng buộc với IsEnabled của một điều khiển.
Monstieur
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.