Использование Views с конструкторами не по умолчанию в Prism - PullRequest
1 голос
/ 01 марта 2012

После полудня я сейчас пытаюсь понять, как я могу создать представление, для которого требуется конструктор не по умолчанию (то есть конструктор, требующий ввода),

    Public Class Bootstrapper
    Inherits UnityBootstrapper

    Protected Overrides Function CreateShell() As System.Windows.DependencyObject
        Return New LogReader_Modular.Windows.Shell()
    End Function

    Protected Overrides Sub InitializeShell()
        MyBase.InitializeShell()
        Application.Current.MainWindow = CType(Me.Shell, Window)
        Application.Current.MainWindow.Show()
    End Sub

    Protected Overrides Sub ConfigureModuleCatalog()
        MyBase.ConfigureModuleCatalog()
        Dim moduleCatalog As ModuleCatalog = CType(Me.ModuleCatalog, ModuleCatalog)
        moduleCatalog.AddModule(GetType(GridModule))
    End Sub
....
....

Public Class GridModule
Implements IModule

Private ReadOnly regionManager As IRegionManager

Public Sub Initialize() Implements IModule.Initialize
    Try
        regionManager.RegisterViewWithRegion("MainDockingRegion", GetType(Views.GridModuleView))
    Catch ex As Exception
        Trace.WriteLine(String.Format("An Error occured the error was {0}", ex.ToString))
    End Try

End Sub

Public Sub New(ByVal regionManager As IRegionManager)
    Try
        Me.regionManager = regionManager
    Catch ex As Exception
        Trace.WriteLine(String.Format("An Error occured the error was {0}", ex.ToString))
    End Try

End Sub

Конечный класс

моя проблема в том, что я хочу передать значения конструктора в GridModuleView, поскольку здесь он на самом деле не создан, поэтому я не совсем понимаю, как передать значения, любая помощь с этим будет оценена, так как я искална это уже несколько дней.РЕДАКТИРОВАТЬ * данные, которые я хочу передать, поступают из оболочки, а не из представления, поэтому я вставил загрузчик. Спасибо, Том.

1 Ответ

1 голос
/ 02 марта 2012

Вы можете использовать метод RegionManager.RegisterViewWithRegion(IRegionManager, String, Func(Object)) вместо метода RegionManager.RegisterViewWithRegion(IRegionManager, String, Type) и затем передать входные данные из оболочки в GridModule.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...