Если вы не указываете ширину или высоту холста, он автоматически использует все доступное пространство. Это связано с тем, что по умолчанию VerticalAlignment
и HorizontalAlignment
установлены на Stretch
.
Что вы подразумеваете под холстом, который масштабирует его содержимое в соответствии с его размером, не масштабируя все содержимое, поскольку некоторые имеют фиксированный размер?
Обновление после комментариев
Если ваш алгоритм рисования уже масштабирует содержимое до высоты и ширины холста, тогда все, что вам нужно сделать, это изменить размер холста, чтобы он соответствовал области, которой я верю? В этом случае просто удалите жестко запрограммированные значения высоты / ширины, и холст изменится в соответствии с размером контейнера.
Возможно, после этого вам может понадобиться использовать ActualHeight / ActualWidth вместо Height / Width в алгоритме рисования. ActualHeight / ActualWidth возвращают значения, которые контейнер макета даст вашему холсту, поэтому они представляют значения, с которыми нарисован холст.