WPF Chiều cao tự động trong mã


101

Làm cách nào để tôi có thể đặt giá trị thuộc Heighttính của điều khiển WPF trong mã C # thành " Auto"?

<Grid.RowDefinitions>
    <RowDefinition />
    <RowDefinition Height="Auto" />
    <RowDefinition />
    <RowDefinition Height="Auto" />
    <RowDefinition />
    <RowDefinition Height="Auto" />
    <RowDefinition />
    <RowDefinition Height="Auto" />
    <RowDefinition />
</Grid.RowDefinitions>

Tôi muốn tái tạo hành vi này trong mã phía sau. Bất kỳ ý tưởng?

Câu trả lời:


144

Có lẽ liên kết này sẽ giúp bạn.

Đôi khi, bạn có thể muốn đặt Chiều cao hoặc Chiều rộng của phần tử WPF theo lập trình thành Tự động trong mã. Để thực hiện việc này, chỉ cần sử dụng giá trị Double.NaN (Không phải số).

Ví dụ, trong C #:

this.txtName.Width = Double.NaN;


1
Đừng làm việc trong trường hợp của tôi. Nhưng tôi đang thay đổi chiều rộng chiều cao thông qua hành vi (biểu hiện sự pha trộn 4,0 lib)
Franck

1
Link là chết nhưng bạn có thể truy cập vào một phiên bản lưu trữ ở đây
akjoshi

2
Câu trả lời của Nimrod rõ ràng và dễ hiểu hơn nhiều.
David

Bắt 'NaN' không phải là một giá trị hợp lệ cho bất động sản 'MaxWidth'
Damitha

Tôi cảm thấy câu trả lời của Nimrod là rõ ràng nhất và bây giờ nên là câu trả lời được chấp nhận (không chắc GridLength.Autolà có thể trong quá khứ). Cũng có GridLength.Starđể lấp đầy diện tích còn lại.
Wolfgang Schreurs

111

Bạn có thể dùng

RowDefinition rd = new RowDefinition ();  
rd.Height = GridLength.Auto;  
ContentGrid.RowDefinitions.Add (rd);

8
Bất kỳ sự khác biệt nào giữa câu trả lời này và câu trả lời được chấp nhận? Bởi vì nếu không, đây phải là câu trả lời hàng đầu cho việc không phá vỡ khuôn khổ.
estebro

3
Theo phản xạ, GridLength.Auto là GridLength mới (1.0, GridUnitType.Auto); do đó không chính xác tương đương với câu trả lời được chấp nhận, nhưng dễ đọc hơn nhiều.
helios456

Đây không phải là một giải pháp chung chung như câu trả lời được chấp nhận. Không phải tất cả các điều khiển đều triển khai thuộc tính Chiều cao dưới dạng đối tượng 'GridLength' (struct). Đối với những người chỉ sử dụng double, câu trả lời này không hoạt động. Và câu hỏi không được hỏi chung chung, nó chỉ sử dụng lưới làm ví dụ.
UuDdLrLrSs
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.