WPF UserControl不显示

时间:2015-04-21 06:29:32

标签: c# wpf xaml user-controls prism

我删除了我之前的问题以适当地改写,因为我以前的帖子既没有帮助也没有完整,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;。

有没有人对为什么会发生这种情况有任何想法?

1 个答案:

答案 0 :(得分:2)

Prism中的默认区域适配器不支持UserControl。您需要使用ContentControl,ItemsControl或基于Selector的控件(如ComboBox)来开箱即用支持或编写您自己的区域适配器。

注意:当您与其区域进行交互时,区域适配器用于在特定类型控件的区域中添加和删除控件。