wpf - Infinite loop loading view when using View-First and View Context switching -
i have curious scenario in existing architecture has been in development while now. architecture uses view-first support caliburn micro inside custom ms office app uses wpf content in ms office task panes. since there no top-level application object, use custom bootstrapper , set of surrogate top-level content "hosts" inside each task pane. view-first top-level hosts each conductors of single item. once hosts initialized when application starts, conduct single child each 1 , point on utilize viewmodel-first approach compose content of each task pane.
i trying introduce view context switching support alternate views, using style of
<contentcontrol cal:view.context="{binding taskpanestate}" cal:view.model="{binding}" />
where taskpanestate observable property on viewmodels can either resolve "maximized" or "minimized".
i organized view folders support these contexts, have minimized.xaml, maximized.xaml, etc.
however, when testing approach getting infinite loop when trying resolve/load/bind:
2014-03-24 14:52:23.5904|info|caliburn.micro.action|setting dc of corp.control.design.views.book.bookdesignerview bookdesignerviewmodel(basic budget example). 2014-03-24 14:52:23.5904|info|caliburn.micro.action|attaching message handler bookdesignerviewmodel(basic budget example) corp.control.design.views.book.bookdesignerview. 2014-03-24 14:52:23.6094|info|caliburn.micro.action|setting dc of corp.control.design.views.book.bookdesignerview bookdesignerviewmodel(basic budget example). 2014-03-24 14:52:23.6094|info|caliburn.micro.action|attaching message handler bookdesignerviewmodel(basic budget example) corp.control.design.views.book.bookdesignerview. 2014-03-24 14:52:23.6314|info|caliburn.micro.action|setting dc of corp.control.design.views.book.bookdesignerview bookdesignerviewmodel(basic budget example). 2014-03-24 14:52:23.6314|info|caliburn.micro.action|attaching message handler bookdesignerviewmodel(basic budget example) corp.control.design.views.book.bookdesignerview. 2014-03-24 14:52:23.6474|info|caliburn.micro.action|setting dc of corp.control.design.views.book.bookdesignerview bookdesignerviewmodel(basic budget example). 2014-03-24 14:52:23.6474|info|caliburn.micro.action|attaching message handler bookdesignerviewmodel(basic budget example) corp.control.design.views.book.bookdesignerview. 2014-03-24 14:52:23.6664|info|caliburn.micro.action|setting dc of corp.control.design.views.book.bookdesignerview bookdesignerviewmodel(basic budget example). 2014-03-24 14:52:23.6664|info|caliburn.micro.action|attaching message handler bookdesignerviewmodel(basic budget example) corp.control.design.views.book.bookdesignerview. 2014-03-24 14:52:23.6904|info|caliburn.micro.action|setting dc of corp.control.design.views.book.bookdesignerview bookdesignerviewmodel(basic budget example). 2014-03-24 14:52:23.6904|info|caliburn.micro.action|attaching message handler bookdesignerviewmodel(basic budget example) corp.control.design.views.book.bookdesignerview. 2014-03-24 14:52:23.7104|info|caliburn.micro.action|setting dc of corp.control.design.views.book.bookdesignerview bookdesignerviewmodel(basic budget example). 2014-03-24 14:52:23.7104|info|caliburn.micro.action|attaching message handler bookdesignerviewmodel(basic budget example) corp.control.design.views.book.bookdesignerview. 2014-03-24 14:52:23.7534|info|caliburn.micro.action|setting dc of corp.control.design.views.book.bookdesignerview bookdesignerviewmodel(basic budget example). 2014-03-24 14:52:23.7534|info|caliburn.micro.action|attaching message handler bookdesignerviewmodel(basic budget example) corp.control.design.views.book.bookdesignerview.
i'm @ loss @ might causing infinite looping.
edit:
so i've updated solution use 2.0.x beta version of caliburn micro, , better behavior, still aberrant somewhat. looping still occurs not infinitely. 250+ loops , things settle down , view loads. can tell in debugger, if put breakpoint on view.onmodelchanged , view.oncontextchanged, debugger flips between these 2 breakpoints 250+ times (seen in log below). i've tried using twoway binding view.context seems make no difference... still scratching head...
here's latest log:
2014-04-01 11:57:53.0681|info|caliburn.micro.action|setting dc of .control.addin.views.objectnavigationtaskpanehostview .control.addin.viewmodels.objectnavigationtaskpanehostviewmodel. 2014-04-01 11:57:53.0741|info|caliburn.micro.action|attaching message handler .control.addin.viewmodels.objectnavigationtaskpanehostviewmodel .control.addin.views.objectnavigationtaskpanehostview. 2014-04-01 11:57:53.0741|info|.control.addin.viewmodels.taskpanehostviewmodel|objectnavigationtaskpanehostviewmodel onviewloaded 2014-04-01 11:57:53.0741|info|.control.addin.viewmodels.taskpanehostviewmodel|objectnavigationtaskpanehostviewmodel onviewattached 2014-04-01 11:57:53.0741|info|caliburn.micro.conventionmanager|viewmodel bound on activeitem. 2014-04-01 11:57:53.0741|info|caliburn.micro.screen|activating .control.addin.viewmodels.objectnavigationtaskpanehostviewmodel. 2014-04-01 11:57:53.0891|info|.control.addin.views.taskpanehostview|entering : activatecontent 2014-04-01 11:57:53.0891|info|.control.addin.viewmodels.taskpanehostviewmodel|objectnavigationtaskpanehostviewmodel queued content viewmodel objectnavigationviewmodel 2014-04-01 11:57:53.0891|info|.control.addin.views.taskpanehostview|exiting: activatecontent 2014-04-01 11:57:53.1221|info|.control.addin.viewmodels.taskpanehostviewmodel|objectnavigationtaskpanehostviewmodel onviewready 2014-04-01 11:57:53.1221|info|.control.addin.viewmodels.taskpanehostviewmodel|activateitem(objectnavigationviewmodel '.control.viewmodels.objectnavigation.objectnavigationviewmodel') 2014-04-01 11:57:53.1221|info|caliburn.micro.screen|activating objectnavigationviewmodel '.control.viewmodels.objectnavigation.objectnavigationviewmodel'. 2014-04-01 11:57:53.1591|info|caliburn.micro.action|setting dc of .control.views.objectnavigation.objectnavigationview objectnavigationviewmodel '.control.viewmodels.objectnavigation.objectnavigationviewmodel'. 2014-04-01 11:57:53.1591|info|caliburn.micro.action|attaching message handler objectnavigationviewmodel '.control.viewmodels.objectnavigation.objectnavigationviewmodel' .control.views.objectnavigation.objectnavigationview. 2014-04-01 11:57:53.1591|info|caliburn.micro.conventionmanager|contenttemplate applied items. 2014-04-01 11:57:53.1591|info|caliburn.micro.conventionmanager|selecteditem binding applied items. 2014-04-01 11:57:53.1811|info|caliburn.micro.screen|activating objecttypenavigationviewmodel 'browse control classes type'. 2014-04-01 11:57:53.3491|info|caliburn.micro.action|setting dc of .control.views.objectnavigation.objecttypenavigationview objecttypenavigationviewmodel 'browse control classes type'. 2014-04-01 11:57:53.3491|info|caliburn.micro.action|attaching message handler objecttypenavigationviewmodel 'browse control classes type' .control.views.objectnavigation.objecttypenavigationview. 2014-04-01 11:57:53.3661|info|caliburn.micro.action|attaching message handler objectnavigationviewmodel '.control.viewmodels.objectnavigation.objectnavigationviewmodel' .control.windows.common.kcicontextmenu items.count:1. 2014-04-01 11:58:05.0291|info|.control.addin.views.taskpanehostview|entering : deactivatecontent 2014-04-01 11:58:05.0291|info|.control.addin.views.taskpanehostview|exiting: deactivatecontent 2014-04-01 11:58:08.2491|info|caliburn.micro.action|setting dc of .control.addin.views.designertaskpanehostview: active designer .control.addin.viewmodels.designertaskpanehostviewmodel. 2014-04-01 11:58:08.2491|info|caliburn.micro.action|attaching message handler .control.addin.viewmodels.designertaskpanehostviewmodel .control.addin.views.designertaskpanehostview: active designer. 2014-04-01 11:58:08.2511|info|.control.addin.viewmodels.taskpanehostviewmodel|designertaskpanehostviewmodel onviewloaded 2014-04-01 11:58:08.2511|info|.control.addin.viewmodels.taskpanehostviewmodel|designertaskpanehostviewmodel onviewattached 2014-04-01 11:58:08.2511|info|caliburn.micro.conventionmanager|viewmodel bound on activeitem. 2014-04-01 11:58:08.2511|info|caliburn.micro.screen|activating .control.addin.viewmodels.designertaskpanehostviewmodel. 2014-04-01 11:58:08.2511|info|.control.addin.views.taskpanehostview|entering : activatecontent 2014-04-01 11:58:08.2511|info|.control.addin.viewmodels.taskpanehostviewmodel|designertaskpanehostviewmodel queued content viewmodel bookdesignerviewmodel 2014-04-01 11:58:08.2511|info|.control.addin.views.taskpanehostview|exiting: activatecontent 2014-04-01 11:58:08.2841|info|.control.addin.viewmodels.taskpanehostviewmodel|designertaskpanehostviewmodel onviewready 2014-04-01 11:58:08.2841|info|.control.addin.viewmodels.taskpanehostviewmodel|activateitem(bookdesignerviewmodel(basic budget example)) 2014-04-01 11:58:08.2841|info|caliburn.micro.screen|activating bookdesignerviewmodel(basic budget example). 2014-04-01 11:58:08.2841|info|caliburn.micro.action|setting dc of .control.design.views.book.bookdesignerview bookdesignerviewmodel(basic budget example). 2014-04-01 11:58:08.2841|info|caliburn.micro.action|attaching message handler bookdesignerviewmodel(basic budget example) .control.design.views.book.bookdesignerview. <snip around 500 lines> 2014-04-01 11:58:08.2841|info|caliburn.micro.action|setting dc of .control.design.views.book.bookdesignerview bookdesignerviewmodel(basic budget example). 2014-04-01 11:58:08.2841|info|caliburn.micro.action|attaching message handler bookdesignerviewmodel(basic budget example) .control.design.views.book.bookdesignerview. 2014-04-01 11:58:08.2841|info|caliburn.micro.action|setting dc of .control.design.views.book.bookdesignerview bookdesignerviewmodel(basic budget example). 2014-04-01 11:58:08.2841|info|caliburn.micro.action|attaching message handler bookdesignerviewmodel(basic budget example) .control.design.views.book.bookdesignerview. 2014-04-01 11:58:08.2841|info|caliburn.micro.action|setting dc of .control.design.views.book.bookdesignerview bookdesignerviewmodel(basic budget example). 2014-04-01 11:58:08.2841|info|caliburn.micro.action|attaching message handler bookdesignerviewmodel(basic budget example) .control.design.views.book.bookdesignerview. <view loads >
so have viewmodel named bookdesignerviewmodel , assume have bookdesignerview view. have folder called bookdesigner (purely structure under views folder) has max/min .xaml (shortened) files contained in bookdesigner folder?
secondly have tried settings cal:view.context="{binding taskpanestate, mode=twoway}" ? know in previous answers asked why done considering nature of notification property in question, honest hadn't put thought because part of examples had looked on while learning cm, example helloscreens shows view switching in full detail.
Comments
Post a Comment