2009-01-30 15 views
5

Khi tôi kéo điều khiển từ hộp công cụ vào bề mặt thiết kế của Visual Studio 2008 WPF, nó đặt lề dựa vào vị trí tôi bỏ nó và mặc định kích thước.Làm thế nào tôi có thể ngăn chặn thiết kế VS WPF đặt lề trên mọi đối tượng từ hộp công cụ

Có cách nào để ngăn VS thiết lập chúng không? Khi tôi thả một điều khiển trên một stackpanel tôi muốn nó chảy vào các điều khiển hiện có trong bảng điều khiển.

Cảm ơn!

+0

Hiện tại, tôi cũng đang làm phiền tôi. – Will

Trả lời

3

Tôi chưa bao giờ tìm thấy cách để ngăn chặn điều này. Tôi chỉ cần gõ XAML thay vào đó.

EDIT:

tôi đã viết ở trên gần ba năm trước đây. Trong khi đó, nó sẽ xuất hiện rằng kinh nghiệm thiết kế thời gian đã nhận được tốt hơn rất nhiều.

Trong khi nhà thiết kế vẫn thêm lề được mã hóa cứng nếu bạn kéo và thả, có nhiều cách để loại bỏ các lề đó mà không phải thực hiện bằng tay.

Đây là liên kết đến bài viết minh họa cách sử dụng công cụ thiết kế trong Visual Studio 2010 để bố cục biểu mẫu mà không phải nhập bất kỳ XAML nào. (Mặc dù tiêu đề, đó là về WPF.)

Layout Techniques for Windows Form Developers

+0

Tương tự ở đây. Các nhà thiết kế WPF là cách quá chậm và lỗi cho thị hiếu của tôi. – Andy

+0

Tôi đồng ý. Nhà thiết kế tốt hơn khi cung cấp một màn hình đại diện cho những gì xaml biểu thị, nhưng tôi không biết liệu nó có thể cung cấp trải nghiệm kéo/thả tuyệt vời của nhà thiết kế winforms cho mô hình cơ bản hoàn toàn khác không. –

+1

Tôi không thấy lý do nào * không * có thể. Bạn có thể làm kéo và thả trong ASP.NET vào trình thiết kế hoặc đánh dấu. Nó không có vẻ giống như một bước dài để làm điều tương tự trong WPF. Nhưng vì lý do gì đó, Microsoft đã không làm cho nó một ưu tiên. –

0

Khi tôi thả một điều khiển vào một stackpanel, nó không thêm lề, nó "chảy" với phần còn lại.

Các điều khiển bạn thả vào bề mặt thiết kế có lề theo mặc định vì đó là cách nó biết vị trí đặt nó. Những gì tôi thường làm là tạo ra một lưới và thiết lập lề của nó, nơi tôi muốn nó, sau đó tạo cột và hàng để đặt điều khiển vào. Tôi thả vào các điều khiển khác của tôi mà sẽ thêm lợi nhuận mà thường không phải là những gì tôi muốn. Sau khi tôi có tất cả các điều khiển của mình vào lưới, được đặt hợp lý, tôi chuyển sang chế độ xem XAML và loại bỏ hoàn toàn lề (điều khiển điều khiển như nút để lấp đầy toàn bộ không gian), hoặc làm cho lề như 5, đặt một số padding tốt đẹp xung quanh kiểm soát.

Dòng dưới cùng ... và điều này đặc biệt đúng với phát triển Silverlight, bạn phải quen với thao tác trực tiếp XAML. Đó là cách duy nhất bạn sẽ có được bố trí chính xác nơi bạn muốn nó. Đây là ý kiến ​​của tôi và hầu hết mọi người trong cửa hàng của tôi, những người thực hiện phát triển WPF/silverlight.

0

Thật không may có vẻ như không phải là phương tiện để thực hiện việc này.

Kích thước mặc định được đặt là kết quả của việc bạn thao tác với kích thước điều khiển của bạn là nhà thiết kế. Khi bạn tăng chiều rộng và/hoặc chiều cao của một điều khiển, nhà thiết kế giải thích các hành động của bạn như một yêu cầu để kiểm soát chiều rộng và/hoặc chiều cao được chỉ định.

Tình huống tương tự cũng gặp phải với các lề. Khi bạn thay đổi vị trí kiểm soát của mình trong nhà thiết kế, nó sửa đổi các thuộc tính để đạt được bố cục bạn đã tạo. Trong trường hợp của hầu hết các container, giải pháp đơn giản nhất là sửa đổi lề để đạt được vị trí mong muốn, như bạn đã chỉ ra giải pháp mẫu không phải lúc nào cũng mong muốn nhất.

Cá nhân tôi thích chỉ sử dụng trình chỉnh sửa XAML và đôi khi chỉ có một điểm cao tại Nhà thiết kế WPF khi tôi muốn xem bố cục hiện tại. Tôi cũng có khuynh hướng ưu tiên sử dụng Grid để bố trí hầu hết các cửa sổ/điều khiển của tôi vì nó cung cấp tính linh hoạt cao nhất không chỉ cho việc định cỡ và định vị mà còn cho các tác vụ/tính năng khác như hoạt ảnh, biến đổi, v.v.

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