Tôi có một Grid
bên trong một Canvas
định nghĩa như thế này:Tại sao ActualWidth và ActualHeight 0.0 trong trường hợp này?
<Canvas x:Name="outerCanvas">
<Grid Grid.Row="1" Name="cGrid" ShowGridLines="True" Width="{Binding Path=ActualWidth, RelativeSource={RelativeSource AncestorType={x:Type Canvas}}}" Height="{Binding Path=ActualHeight, RelativeSource={RelativeSource AncestorType={x:Type Canvas}}}">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Rectangle Name="rectangle1" Stroke="Black" Fill="AntiqueWhite" />
<Rectangle Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="1" Grid.RowSpan="1" Name="rectangle2" Stroke="Black" Fill="AliceBlue" />
<Rectangle Grid.Row="0" Grid.Column="2" Grid.ColumnSpan="1" Grid.RowSpan="1" Name="rectangle3" Stroke="Black" Fill="Aqua" />
<Rectangle Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="3" Grid.RowSpan="1" Name="rectangle4" Stroke="Black" Fill="DarkViolet" />
</Grid>
</Canvas>
Vấn đề của tôi là, trên các nhà xây dựng Window, sau InitializeComponents()
hoặc Grid.ColumnDefinitions[0].ActualWidth
hoặc "bất kỳ hình chữ nhật". ActualWidth
đều được đặt thành 0.0 (tương đương với chiều cao). Tôi không biết phải làm gì để có được thông tin này. bất kỳ giúp đỡ?
Quan sát:
- Tôi không definig chiều rộng vải bên ngoài và chiều cao nhưng nếu tôi làm, nó does't giải quyết vấn đề của tôi.
- Khi chạy tôi có thể thấy rằng
Canvas/Grid
này chiếm toàn bộ không gian cửa sổ, như vậy mỗi hình chữ nhật bên trong nó cóActualWidth
s vàActualHeight
s - của lưới rộng/chiều cao được ràng buộc với vải nhưng tôi đã cố gắng loại bỏ ràng buộc này và vấn đề của tôi tồn tại
Cảm ơn! Chỉ cần một chút chỉnh sửa: window.Measure trả về void. Nó thay đổi các thuộc tính DesiredWidth/DesiredHeight :) Nhưng ý tưởng của bạn là đúng. –
Đó là những gì xảy ra khi bạn nhập mã ra khỏi đầu của bạn mà không cần kiểm tra lại các API. Cảm ơn vì sự đúng đắn của bạn. MeasureOverride trả về kích thước, nhưng Measure chỉ lưu trữ chúng. Đã sửa câu trả lời. –
Không chắc chắn nếu "DesiredWidth" làm việc trước đây, nhưng phiên bản mới hơn của .NET sử dụng DesiredSize.Width và DesiredSize.Chiều cao –