Кампазітны выгляд - Прагляд ўжо існуе ў памылцы вобласці

Я працую над дадаткам 4/AvalonDoc WPF/Prism.

Адзін з маіх поглядаў з'яўляецца вельмі складаным і ViewModel становіцца велізарным і unmanagable. Таму я вырашыў разбіць яго на больш дробныя погляды са сваім ViewModels.

Я змясціў вобласць на паданні і загрузкі суб-прадстаўленне ў гэтай галіне з выкарыстаннем метаду regionManager.RegisterViewWithRegion ад «майстар» ViewModel канструктара.

Гэта працуе так жа, як і варта было чакаць, калі толькі адзін асобнік гледжання загружаны. Але калі я адкрываю другі асобнік гэтага экрана (ён загружаецца як DocumentContent ў DocumentPane AvalonDock в) я атрымліваю «Прагляд ўжо існуе ў рэгіёне» памылка.

Я хацеў бы, каб не даць гэтаму рэгіёну некаторы унікальнае імя, калі гэта магчыма. Ці ёсць спосаб, каб паказаць, што я дадаю суб-паказ для канкрэтнага асобніка «майстар» гледжання? Любыя рэкамендацыі аб тым, як гэта зрабіць?

2

2 адказы

Калі вы выкарыстоўваеце MEF і ваша меркаванне Singleton г.зн.

[PartCreationPolicy(CreationPolicy.Shared)]

і ваш INavigationAware вярнуцца на ілжывы

public override bool IsNavigationTarget(NavigationContext navigationContext)

{Вярнуцца ілжывым;}

Вы атрымаеце гэтую памылку.

Change [PartCreationPolicy(CreationPolicy.Shared)] to [PartCreationPolicy(CreationPolicy.NonShared)]

і вы зрабілі.

1
дададзена

Я баюся, што вы не можаце мець некалькі рэгіёнаў з тым жа імем. Я палічыў за лепшае б не падзяляць пункт гледжання, калі мадэль прадстаўлення ўскладняецца. Вы можаце разбіць мадэль прадстаўлення на некалькі спецыялізаванай мадэль прадстаўлення.

Прыклад. У вас ёсць кіраўніцтва карыстальніка. Адзін выгляд мадэлі прадстаўлены спіс усіх карыстальнікаў. Гэты спіс змяшчае карыстальніку праглядаць мадэлі. І кожная мадэль прадстаўлення карыстальніка ўтрымлівае асобнік мадэлі прадстаўлення правоў карыстальніка, які сам па сабе з'яўляецца зноў спісам мадэляў гледжання, якія ўяўляюць сабой толькі адно права карыстальніка. Такім чынам, логіка ў тым, каб прадставіць спецыяльнае права карыстальніка пераходзіць у мадэль прадстаўлення карэспандэнта, а не ў мадэль прадстаўлення спісу карыстальнікаў «майстар». Такім чынам, вы можаце падзяліць вашыя праблемы ў розныя мадэлі прадстаўлення.

Звязванне з гэтымі мадэлямі гледжання гэтак жа проста, як толькі адзін выгляд мадэлі. Проста шлях становіцца трохі больш. Калі кантэкст дадзеных з'яўляецца выгляд спісу карыстальнікаў мадэлі з прыведзенага вышэй прыкладу можна Propably мець абавязковы шлях CurrentUserVM.UserRightsVM, каб атрымаць спіс правоў карыстальніка.

0
дададзена