2011-10-26 33 views
8

Tôi có Điều khiển hình ảnh trong Cửa sổ của tôi. Kích thước của điều khiển Hình ảnh này được đặt thành "Tự động".Nhận kích thước hiện tại của các điều khiển WPF

<Image x:Name="videoImg" Stretch="Fill" Height="Auto" Width="Auto" /> 

Khi tôi cố gắng truy cập, nó trả về 0. Làm cách nào để xem kích thước thực của điều khiển này? Nó thay đổi kích thước với cửa sổ.

Trả lời

15

Bạn có thể sử dụng .ActualHeight.ActualWidth để có được trả lại Height/Width của một điều khiển

+0

Tôi đã thử thực hiện việc này. Nhưng kết quả là như nhau ( –

+0

@TimurMustafaev Làm thế nào bạn đang cố gắng để có được các giá trị? Thông qua mã đằng sau? Thông qua một ràng buộc? Và khi nào bạn đang cố gắng để có được các giá trị? Kiểm soát phải được trả trước 'ActualHeigh' và' ActualWidth' – Rachel

+0

Tôi gọi mẫu mới từ MainWindow của tôi.Trong hình thức mới này có fiew điều khiển và một trong số họ là hình ảnh.Sau khi cửa sổ nạp tôi cố gắng để có được kích thước như thế này: _imageControl.ActualWidth hoặc _imageControl.ActualHeigh –

3

Có điều là, các WidthHeight thuộc tính cho phép bạn thể hiện sự mong muốn kích thước, trong khi những gì bạn muốn là render kích thước - có thể được truy cập (nhưng không được đặt) bằng cách sử dụng các thuộc tính ActualWidthActualHeight. Cần lưu ý rằng đây không phải là giá trị tĩnh, nghĩa là, một khi đã đặt chúng không nhất thiết sẽ giống nhau mãi mãi sau đó, vì nó sẽ được đánh giá lại theo từng chuỗi kết xuất ...

Vì [ActualHeight/ActualWidth] là giá trị được tính toán, bạn nên lưu ý rằng có thể có nhiều thay đổi hoặc báo cáo gia tăng về kết quả của các hoạt động khác nhau bởi hệ thống bố cục. Hệ thống bố trí có thể được tính toán yêu cầu đo không gian cho các phần tử con, ràng buộc bởi phần tử gốc, v.v.

Vì vậy, tùy thuộc vào yêu cầu của bạn, bạn có thể muốn xem xét lại dữ liệu của mình tại các điểm thích hợp, ví dụ: khi điều khiển chứa thay đổi kích thước.

1

Trong khi một số điều khiển WPF lấp đầy tất cả không gian có sẵn khi được bố trí và hiển thị, những người khác thì không. Cụ thể, điều khiển Hình ảnh không phải là loại tự thiết lập kích thước của nó, ví dụ: trong trường hợp bạn không chỉ định kích thước của đối tượng một cách rõ ràng với thuộc tính chiều rộng/chiều cao hoặc tương tự.

Nhưng điều khiển lưới sẽ lấp đầy tất cả không gian có sẵn khi thiếu thuộc tính xác định kích thước. Mẫu Page/Window trong Visual Studio có một điều khiển Grid là con của điều khiển gốc trang/cửa sổ, và khi người dùng bắt đầu đặt các điều khiển trên một trang trong trình soạn thảo đồ họa, các điều khiển do người dùng thêm đầu tiên trở thành con của lưới này điều khiển.

Nếu bạn đã sử dụng mẫu VS và điều khiển hình ảnh của bạn là con của điều khiển lưới đã cho biết, hãy đặt tên cho lưới của bạn bằng thuộc tính x: Name và bạn có thể sử dụng thuộc tính ActualWidth/Height của Grid cho nhu cầu của mình code-behind, bởi vì điều khiển hình ảnh lớn lên đến kích thước lưới bố mẹ của nó - miễn là bạn không chỉ định kích thước của nó một cách rõ ràng hay cách khác, tức là, thiết lập nội dung Hình ảnh.

Nhân tiện, hành vi định cỡ của các điều khiển tích hợp có thể được thay đổi. Bạn có thể sửa đổi một điều khiển và ghi đè các thuộc tính phụ thuộc tương ứng. Xem, ví dụ: https://stackoverflow.com/a/6094993.

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