2009-09-11 25 views
23

Khá thường xuyên khi trở lại Visual Studio từ Expression Blend 3, tôi thấy rằng Blend đã giúp thêm một thuộc tính "d: LayoutOverrides" vào XAML của tôi. Lớn lên với các nhà thiết kế ASP.NET, tôi tự tin không tin tưởng bất cứ điều gì tôi sẽ không loại bản thân mình, vì vậy loại bỏ chúng ngay sau khi tôi nhìn thấy chúng.Tại sao Blend thêm [d: LayoutOverrides = "Height"] và tôi nên quan tâm?

Tôi biết rằng thuộc tính "d:" là chỉ dành cho nhà thiết kế và không ảnh hưởng đến thời gian chạy, nhưng bất kỳ ai cũng có thể cung cấp thông tin chi tiết về thuộc tính này và tại sao Blend lại khẳng định rằng tôi có tất cả chúng trên đánh dấu của tôi?

<Border d:LayoutOverrides="Height" /> 

Trả lời

31

Chỉ có ở đó để Blend biết cách hiển thị XAML của bạn ở chế độ thiết kế. Cụ thể, nếu bạn đã có bố cục chất lỏng trải dài để lấp đầy vùng chứa, thì không có cách nào rõ ràng cho Blend để biết thiết kế của bạn nên cao bao nhiêu; LayoutOverrides định nghĩa điều đó.

Các mục nhập cài đặt LayoutOverride được thêm khi bạn (hoặc một người khác đang chạy Blend) tự định lại kích thước các phần tử trong bề mặt thiết kế. Nếu bạn nhìn thấy chúng khắp nơi trên mã của bạn (chẳng hạn như trong một yếu tố Border):

  1. Bạn thường có thể xóa chúng mà không cần bất kỳ đáng chú ý ảnh hưởng đến
  2. Bạn có thể xem làm thế nào bạn đang sử dụng Blend - đặc biệt, bạn nên kích thước cotain cha mẹ với kích thước tốt (UserControl/LayoutRoot), sau đó đặt kích thước con dựa trên bố cục lỏng - ví dụ phần đệm và lề hoặc * kích cỡ

Lưu ý rằng thuộc tính không thể bỏ qua của Blend bị tước bỏ lúc biên dịch và không ảnh hưởng đến hiệu suất của ứng dụng. Vì vậy, trong khi bạn có thể muốn loại bỏ chúng để cải thiện khả năng đọc mã, chúng không ảnh hưởng đến cách ứng dụng của bạn chạy.

+1

xuất sắc trả lời. – heltonbiker

+5

@jon Tôi vẫn chưa hiểu! Tôi hiểu hoàn toàn những gì d: DesignWidth = "500", nhưng LayoutOverrides không thực sự chỉ định bất kỳ kích thước nào chính xác nó làm gì? Bạn nói "LayoutOverrides định nghĩa rằng", nhưng xác định những gì? Nếu tôi thay đổi kích thước một thành phần trong Blend nó chỉ đặt chiều cao, không d: LayoutOverrides hoặc d: DesignHeight. Nó có vẻ rất phổ biến trên TextBlock nhưng tôi vẫn bối rối vì tôi không thấy nó thực sự ảnh hưởng đến bất cứ điều gì trong Blend một cách này hay cách khác: - / –

2

d: LayoutOverrides

Nếu một tài sản được đặt thành một giá trị cố định trong thời gian chạy, nhưng bạn muốn ghi đè lên nó ở designtime, bạn có thể sử dụng d: thuộc tính LayoutOverrides. Tất cả các thuộc tính cần được bỏ qua tại designtime có thể được liệt kê, phân tách bằng dấu chấm phẩy.

(nguồn: http://wpftutorial.net/DesigntimeVsRuntime.html)

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