Как зарегистрировать несколько видов из одного и того же модуля в PRISM? - PullRequest
0 голосов
/ 17 марта 2011

У меня есть модуль MVVM, который имеет два представления. Этот модуль используется в двух отдельных приложениях PRISM.

Как мне сказать Shell, какой вид должен отображать?

1 Ответ

2 голосов
/ 25 марта 2011

Оболочка не знает, какой вид отображать.Оболочка предлагает только регион:

<Window x:Class="PCRS.Client.Shell"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:Regions="clr-namespace:Microsoft.Practices.Prism.Regions;assembly=Microsoft.Practices.Prism" >
    <Grid>
        <ContentControl Regions:RegionManager.RegionName="MainRegion"/>
    </Grid>
</Window>

Модуль должен зарегистрировать представление для региона, в котором он должен быть представлен:

[Module(ModuleName="MyModule")]
public class MyModule : IModule
{
    public void Initialize( )
    {
        RegionManager.RegisterViewWithRegion( "MainRegion", typeof( MyView ) );
    }
}

Менеджер региона теперь заботится о размещениивид в указанный регион.

Если у вас есть два вида, используемых в разных приложениях, вы можете зарегистрировать MyView1 в регион с именем MyView1Region и MyView2 в регион с именем MyView2Region:

RegionManager.RegisterViewWithRegion( "MyView1Region", typeof( MyView1 ) );
RegionManager.RegisterViewWithRegion( "MyView2Region", typeof( MyView2 ) );

Теперь выможете решить, назвав регион в оболочке, какой вид использовать.

Но я думаю, что вы не должны использовать PRISM или вам следует переосмыслить свой дизайн.PRISM сделан для того, чтобы отделить модули приложения и не иметь единственной оболочки, которая знает весь состав приложения.Использование PRISM позволяет модулям решать, где размещать свои представления в пользовательском интерфейсе.Если вы хотите, чтобы эта способность принимать решения находилась внутри оболочки, вам не нужна ПРИЗМА.Для вас более вероятно использование стандартного шаблона MVVM.

...