PRISM 4 - RegisterViewWithRegion и настраиваемые атрибуты экспорта

Я использую Prism 4 с расширениями MEF и шаблоном MVVM. Во время инициализации в модуле я вызываю RegisterViewWithRegion (RegionNames.MyRegion, typeof (MyView)), который отлично работает, когда представление построено следующим образом:

[Export]
[PartCreationPolicy(CreationPolicy.NonShared)]
public partial class MyView : UserControl
{
    public MyView()
    {
     ....

Представление регистрируется, и все в порядке. Как только я изменяю экспорт на пользовательский атрибут экспорта, представление больше не может быть найдено, хотя оно все еще находится в контейнере. Этот настраиваемый атрибут экспорта взят из Stock Trader RI:

[AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
[MetadataAttribute]
public class ViewExportAttribute : ExportAttribute, IViewRegionRegistration
{
    public ViewExportAttribute()
        : base(typeof(object))
    { }

    public ViewExportAttribute(string viewName)
        : base(viewName, typeof(object))
    {
        ViewName = viewName;
    }

    public string RegionName { get; set; }
    public string ViewName { get; set; }

}

, а интерфейс -

public interface IViewRegionRegistration
{
    string RegionName { get; }
    string ViewName { get; }
}

. При изменении атрибута экспорта на

[ViewExport(ViewName = "MyView", RegionName = RegionNames.MyRegion)]
[PartCreationPolicy(CreationPolicy.NonShared)]
public partial class MyView : UserControl
{
    public MyView()
    {
    ....

при вызове RegisterViewWithRegion возникает ошибка: произошла ошибка активации при попытке получить экземпляр типа MyView , ключ ""

Какие-нибудь советы? Я просматривал эту часть кода целый день, но не нашел решения.

5
задан okieh 7 June 2011 в 20:23
поделиться