我删除了我之前的问题以适当地改写,因为我以前的帖子既没有帮助也没有完整,imo。
为清楚起见:我使用Prism框架并遵守严格的MVVM模式。
问题:当我加载某个模块UserControl
中定义的ModuleA
时,它不会显示在Shell
视图中。但是,如果我将UserControl
加载到ItemsControl
中,则会显示我已定义的元素,但它们会被挤压在一起'。
在ModuleA中,我有以下UserControl:
<UserControl ...
...>
...
<Grid>
... My Content Here ...
</Grid>
</UserControl>
现在,在我的项目中,我已经定义了Shell
:
<Window ...
...>
...
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="10"/>
<RowDefinition Height="10"/>
<RowDefinition Height="10"/>
</Grid.RowDefinitions>
<Border Grid.Row="0" .../>
<UserControl Grid.Row="1" prism:RegionManager.RegionName="ModuleARegion"/>
<Border Grid.Row="2" .../>
</Grid>
</Window>
现在,在这种情况下,所有内容都会加载,并且ModuleA
被识别,但屏幕上没有任何内容。
但是,如果我将<UserControl Grid.Row="0" prism:RegionManger .../>
更改为<ItemsControl Grid.Row="0" prism:RegionManager .../>
,我可以看到我在ModuleA
UserControl
中列出的内容,但内容为所有人都挤在一起&#39;。
有没有人对为什么会发生这种情况有任何想法?
答案 0 :(得分:2)
Prism中的默认区域适配器不支持UserControl。您需要使用ContentControl,ItemsControl或基于Selector的控件(如ComboBox)来开箱即用支持或编写您自己的区域适配器。
注意:当您与其区域进行交互时,区域适配器用于在特定类型控件的区域中添加和删除控件。