Commit 8db201c
[Windows] Fixed BoxView improper rendering inside Border (#28465)
### Issue Details:
Placing a BoxView inside a Border results in incorrect sizing.
### Root Cause
On Windows, when content inside a Border has the same or larger explicit
size than the Border itself, the WinUI AdjustForExplicitSize logic
expands the content's measured size back to its requested dimensions,
even after the available size has been reduced to account for the border
stroke. This causes MeasureContent to return a desired size larger than
the Border by StrokeThickness * 2, resulting in the parent layout
allocating an oversized layout slot. Consequently, the right and bottom
border strokes can be clipped during rendering.
### Description of Change
Override MeasureOverride in the Windows ContentPanel to constrain the
reported desired size to the Border's explicit Width and Height when
both values are set. This ensures the correct desired size is returned
to the parent layout, allowing the Border to receive the intended layout
slot size while preserving the existing ArrangeOverride and clipping
behavior.
### Validated the behaviour in the following platforms
- [x] Android
- [x] Windows
- [x] iOS
- [x] Mac
### Issues Fixed:
Fixes #19668
### Screenshots
| Before | After |
|---------|--------|
| <img
src="https://github.com/user-attachments/assets/b81f0982-e3c2-40d9-ab8b-0b1d743fa99a">
| <img
src="https://github.com/user-attachments/assets/f45e3ebf-e48c-48dd-9c39-42c5413c9268">
|1 parent 30d21ca commit 8db201c
5 files changed
Lines changed: 127 additions & 4 deletions
File tree
- src
- Controls/tests
- DeviceTests/Elements/Border
- TestCases.WinUI.Tests/snapshots/windows
- Core/src
- Platform/Windows
- PublicAPI/net-windows
Lines changed: 87 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
| 1 | + | |
| 2 | + | |
2 | 3 | | |
3 | 4 | | |
| 5 | + | |
4 | 6 | | |
5 | 7 | | |
6 | 8 | | |
| 9 | + | |
7 | 10 | | |
8 | 11 | | |
9 | 12 | | |
| |||
79 | 82 | | |
80 | 83 | | |
81 | 84 | | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
82 | 168 | | |
83 | 169 | | |
84 | 170 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
| 11 | + | |
11 | 12 | | |
12 | 13 | | |
13 | 14 | | |
14 | 15 | | |
| 16 | + | |
15 | 17 | | |
16 | 18 | | |
17 | 19 | | |
| |||
55 | 57 | | |
56 | 58 | | |
57 | 59 | | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
58 | 91 | | |
59 | 92 | | |
60 | 93 | | |
| |||
66 | 99 | | |
67 | 100 | | |
68 | 101 | | |
69 | | - | |
| 102 | + | |
70 | 103 | | |
71 | 104 | | |
72 | 105 | | |
| |||
251 | 284 | | |
252 | 285 | | |
253 | 286 | | |
254 | | - | |
255 | | - | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
256 | 292 | | |
257 | 293 | | |
258 | 294 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
| 4 | + | |
4 | 5 | | |
0 commit comments