Иногда мне требовалось, чтобы размер окна изначально соответствовал его содержанию, а затем оставлял размер фиксированным, если явно не изменен размер. Как правило, я просто перехватываю событие ContentRendered
окна и очищаю свойство SizeToContent
в обработчике события (а также отсоединяю событие). Это гарантирует, что макет полностью завершен, окно было показано и его границы полностью рассчитаны к тому времени, когда вы вернетесь к фиксированному размеру.
Это не лучшее решение в мире, и оно ломается в тех случаях, когда ваш контент не полностью доступен, когда происходит событие ContentRendered
. Наиболее вероятный пример, о котором я могу подумать, будет, если данные в вашей модели представления еще не доступны, и, следовательно, ваше представление еще не заполнено полностью. Это может не быть проблемой для вас - это зависит от вашего дизайна и от того, выполняете ли вы какую-либо отложенную / асинхронную загрузку данных. Но он работает в более простых сценариях и обладает простотой реализации.