Ну, я не уверен, что ваше решение не совсем правильно; это определенно некрасиво Я считаю, что проблема, с которой вы сталкиваетесь, заключается в том, что вы помечаете сетку или холст как область. Это нормально, но в этих случаях элементы будут скрываться, если только вы не сможете указать смещения X и Y для Canvas или Column / Row для Grid.
Prism предоставляет три типа адаптеров для регионов. См. MSDN .
- ContentControlRegionAdapter. Этот адаптер адаптирует элементы управления типа System.Windows.Controls.ContentControl и производные классы.
- SelectorRegionAdapter. Этот адаптер адаптирует элементы управления, производные от класса System.Windows.Controls.Primitives.Selector, например, элемент управления System.Windows.Controls.TabControl.
- ItemsControlRegionAdapter. Этот адаптер адаптирует элементы управления типа System.Windows.Controls.ItemsControl и производных классов.
Это означает, что вы можете использовать области поверх любого ContentControl (элементы управления, отображающие один элемент Content), селекторы, отображающие несколько элементов содержимого и имеющие концепцию выбранного элемента, и ItemsControl, который является просто элементом управления. который отображает несколько объектов.
Я полагаю, что решением вашей проблемы является использование ItemsControl, который автоматически изменит свой размер для отображения всех ваших просмотров.