ç®æ¬¡
- ã¯ããã«
- Prismã¢ããªã±ãŒã·ã§ã³ã®åæå
- ã³ã³ããŒãã³ãéã®äŸåé¢ä¿ã®ç®¡ç
- ã¢ãžã¥ã©ãŒã¢ããªã±ãŒã·ã§ã³éçº
- MVVMãã¿ãŒã³ã®å®è£
- é«åºŠãªMVVMã·ããªãª
- ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã®äœæ
- ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã®ã¬ã€ãã©ã€ã³
- ããã²ãŒã·ã§ã³
- ãã¥ãŒããŒã¹ã®ããã²ãŒã·ã§ã³
- ççµåã³ã³ããŒãã³ãéã®çžäºäœçš
ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ãäœæããããã®ããã€ãã®ãã©ãã€ã ããããŸãã
- ãã¹ãŠã®ã³ã³ãããŒã«ã¯1ã€ã®XAMLãã¡ã€ã«ã«å«ãŸããŠããããã©ãŒã èšèšäžã«çµåãããŸãã
- ãã©ãŒã ã¯è«ççãªéšåãéåžžã¯ãŠãŒã¶ãŒã³ã³ãããŒã«ã«åå²ãããŸãã èšèšäžã«ãã©ãŒã ãäœæããããããã®ããŒããåç
§ãããŸãã
- åã®ããŒãžã§ã³ãšåæ§ã«ããã©ãŒã ã¯è«çéšåã«åå²ãããŸãããããããçŽæ¥åç
§ããããšã¯ãããŸããã å®è¡æã«ããŒãããã©ãŒã ã«è¿œå ãããŸãã ãã®ãããªã¢ããªã±ãŒã·ã§ã³ã¯ã³ã³ããžãããšåŒã°ããŸãã
éåžžãè€åã¢ããªã±ãŒã·ã§ã³ã€ã³ã¿ãŒãã§ã€ã¹ã¯ããã¥ãŒãšåŒã°ããç°çš®ã®ã³ã³ããŒãã³ãã§æ§æãããŸãã ãã¥ãŒã¯éåžžãã¢ããªã±ãŒã·ã§ã³ã¢ãžã¥ãŒã«ã«ãããŸãããããã¯å¿
é ã§ã¯ãããŸããã ã¢ããªã±ãŒã·ã§ã³ãã¢ãžã¥ãŒã«ã«åå²ããå Žåãççµåãã¥ãŒããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã«çµåããæ¹æ³ãå¿
èŠã§ãã ãã ãããã¥ãŒãç°ãªãã¢ãžã¥ãŒã«ã«ãªãå Žåã§ãããã®ã¢ãããŒãã䜿çšã§ããŸãã
ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ãæ§ç¯ããã«ã¯ãå®è¡æã«çæãããççµåã®èŠèŠèŠçŽ ã§æ§æãããããŒã¯ã¢ãããäœæã§ããã¢ãŒããã¯ãã£ãå¿
èŠã§ãã ããã«ããã®ã¢ãŒããã¯ãã£ã§ã¯ããã¥ãŒå士ãççµåã®ãŸãŸã§ã¡ãã»ãŒãžãçžäºã«äº€æã§ããå¿
èŠããããŸãã
äžã®å³ã«ç€ºãããã«ã
æ ªåŒãã¬ãŒããŒãªãã¡ã¬ã³ã¹å®è£
ïŒæ ªåŒãã¬ãŒããŒRIïŒã¯ãããŸããŸãªã¢ãžã¥ãŒã«ãã
Shell
ã§å®£èšãããé åã«ãã¥ãŒãããŒãããããšã«ãããå®è¡æã«ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ãã³ã³ãã€ã«ããŸãã

ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã®ã¬ã€ã¢ãŠã
è€åã¢ããªã±ãŒã·ã§ã³ã®ã«ãŒãèŠçŽ ã¯
Shell
ãšåŒã°ããŸãã ã·ã§ã«ã¯ã¢ããªã±ãŒã·ã§ã³ã®ãã¹ã¿ãŒããŒãžãšããŠæ©èœããè€æ°ã®ãªãŒãžã§ã³ïŒ
Region
ïŒã§æ§æãããŸãã ãªãŒãžã§ã³ã¯ãå®è¡æã«ã³ã³ãã³ããããŒãããããã¬ãŒã¹ãã«ããŒèŠçŽ ã§ãã ãªãŒãžã§ã³ã¯ã
ContentControl
ã
ItemsControl
ã
TabControl
ããŸãã¯ãŠãŒã¶ãŒã³ã³ãããŒã«ãªã©ã®ããŸããŸãªUIèŠçŽ ã«é¢é£ä»ããããšãã§ããã³ã³ãã³ããå¶åŸ¡ã§ããŸãã ãªãŒãžã§ã³ã¯ãã¢ããªã±ãŒã·ã§ã³ã®èŠä»¶ã«å¿ããŠãã³ã³ãã³ããèªåãŸãã¯ãªã³ããã³ãã§ããŠã³ããŒãã§ããŸãã
éåžžãé åã®ã³ã³ãã³ãã¯ãã¥ãŒã§ãã ã¢ããªã±ãŒã·ã§ã³ã®ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã®äžéšãã«ãã»ã«åããã¢ããªã±ãŒã·ã§ã³ã®ä»ã®éšåããåé¢ããŸãã ãã¥ãŒã¯ããŠãŒã¶ãŒã³ã³ãããŒã«ãŸãã¯ããŒã¿ãã³ãã¬ãŒãã®ããããã§ãã
é åã¯ããã¥ãŒã®ã¬ã€ã¢ãŠããšè¡šç€ºãå¶åŸ¡ããŸãã é åã«ã¯ååã§ã¢ã¯ã»ã¹ã§ããŸãã ãŸãããã¥ãŒã®åçãªè¿œå ãšåé€ããµããŒãããŠããŸãã ãªãŒãžã§ã³ã¯ããã¥ãŒãåçã«ããŒããããã³ã³ãããšèããããšãã§ããŸãã
次ã®ã»ã¯ã·ã§ã³ã§ã¯ãè€åã¢ããªã±ãŒã·ã§ã³ãäœæããããã®é«ã¬ãã«ã®æŠå¿µã«ã€ããŠèå¯ããŸãã
ã·ã§ã«
ã·ã§ã«ã¯ã¢ããªã±ãŒã·ã§ã³ã®ã«ãŒããªããžã§ã¯ãã§ããããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã®äž»èŠéšåãå«ãŸããŠããŸãã WPFã¢ããªã±ãŒã·ã§ã³ã§ã¯ã
Windows
ãªããžã§ã¯ãã¯ã·ã§ã«ãšããŠæ©èœããŸãã Silverlightã¢ããªã±ãŒã·ã§ã³
RootVisualUserControl
ã
ã©ãããŒã¯ãã¹ã¿ãŒããŒãžãšããŠæ©èœããã€ã³ã¿ãŒãã§ã€ã¹ã®åºæ¬ã¬ã€ã¢ãŠããæäŸããŸãã ããã«ã¯ãã¢ãžã¥ãŒã«ãå¿
èŠãªè¡šçŸã代çšã§ãã1ã€ä»¥äžã®ååä»ãé åãå«ãŸããŸãã ãŸããèæ¯ãã¡ã€ã³ã¡ãã¥ãŒãããŒã«ããŒãªã©ãç¹å®ã®é«ã¬ãã«ã®ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã³ã³ããŒãã³ããå«ãŸããŠããå ŽåããããŸãã
ã·ã§ã«ã¯ãã¢ããªã±ãŒã·ã§ã³ã®äžè¬çãªå€èгãå®çŸ©ããŸãã ã·ã§ã«èªäœã«è¡šç€ºãããã¹ã¿ã€ã«ãšå¢çç·ãããã³ããŠã³ããŒãå¯èœãªãã¥ãŒã«é©çšã§ããã¹ã¿ã€ã«ããã³ãã¬ãŒããããŒããå®çŸ©ã§ããŸãã
éåžžãã·ã§ã«ã¯ãã©ã€ããªWPFãŸãã¯Silverlightãããžã§ã¯ãã®äžéšã§ãã ã·ã§ã«ãå«ãã¢ã»ã³ããªã¯ãããŒãå¯èœãªãã¥ãŒã§ã¢ã»ã³ããªãåç
§ããå ŽåããããŸãããŸãã¯ãå®è¡æã«ã¢ã»ã³ããªãæ€çŽ¢ããã³ããŒããããå Žåãåç
§ããªãå ŽåããããŸãã
èŠèŽåæ°
衚çŸã¯ãã¢ããªã±ãŒã·ã§ã³ã®ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ãæ§ç¯ããäž»èŠãªèŠçŽ ã§ãã ã«ã¹ã¿ã ã³ã³ãããŒã«ãããŒãžïŒ
Page
ïŒããŸãã¯ããŒã¿ãã³ãã¬ãŒãããã¥ãŒãšããŠäœ¿çšã§ããŸãã ãã®ãã¥ãŒã¯ãã¢ããªã±ãŒã·ã§ã³ã®æ®ãã®éšåããé ãããããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã®éšåãã«ãã»ã«åããŸãã æ©èœã®åé¢ãšã¢ããªã±ãŒã·ã§ã³å
ã®ã€ã³ã¿ãŒãã§ãŒã¹ã®äžéšã®åå©çšã®äž¡æ¹ã«åºã¥ããŠããã¬ãŒã³ããŒã·ã§ã³ã«å«ããå
容ãéžæã§ããŸãã
WPFããã³Silverlightã§äœ¿çšãããã³ã³ãã³ãã¢ãã«ã®ãããã§ãPrismã«é¢é£ãããã¥ãŒãäœæããã®ã«äœãå¿
èŠãããŸããã ãã¥ãŒãäœæããæãç°¡åãªæ¹æ³ã¯ã
User Control
ãäœæããããšã§ãã ãã¥ãŒãUIã«è¿œå ããã«ã¯ããã®ãã¥ãŒãäœæããŠã³ã³ãããŒã«è¿œå ããæ¹æ³ã®ã¿ãå¿
èŠã§ãã WPFãšSilverlightã¯ããããè¡ãããã®ã¡ã«ããºã ãæäŸããŸãã Prismã¯ãå®è¡æã«ãã¥ãŒãåçã«è¿œå ã§ããé åãæå®ããæ©èœã远å ããŸãã
è€åãã¥ãŒ
ããã€ãã®æ©èœã远å ãããšã衚çŸãéåžžã«è€éã«ãªãå¯èœæ§ããããŸãã ãã®å Žåããããè€æ°ã®åãã¥ãŒã«åå²ãã芪ãã¥ãŒã䜿çšããŠåãã¥ãŒãäœæããã³é
眮ã§ããŸãã ããã¯èšèšæã«éçã«çºçããå Žåãšåçã«çºçããå Žåããããã¢ãžã¥ãŒã«ã¯å®è¡æã«ãã¥ãŒãé åã«çœ®ãæããããšãã§ããŸãã ãã¥ãŒã1ã€ã®ã¯ã©ã¹ã§å®å
šã«å®çŸ©ãããŠããªãå Žåãè€åãã¥ãŒãšããŠåç
§ã§ããŸãã å€ãã®å Žåã芪ãã¥ãŒã¯åãã¥ãŒã®äœæãšãããã®çžäºäœçšã®èª¿æŽã®äž¡æ¹ãæ
åœããŸãã ã€ãã³ãã¢ã°ãªã²ãŒã¿ãŒãã³ãã³ããªããžã§ã¯ããªã©ã®Prismæ©èœã䜿çšããŠãçžäºã«é¢é£æ§ã®äœãåãã¥ãŒãèšèšã§ããŸãã
ãã¥ãŒãšãã¶ã€ã³ãã¿ãŒã³
Prismã¯ããã䞻匵ããŠããŸãããããã¥ãŒãäœæããéã«ããã€ãã®ãã¶ã€ã³ãã¿ãŒã³ã®äœ¿çšãæ€èšããå¿
èŠããããŸãã
Stock Trader RIããã³
QuickStartsã¯ãã€ã³ã¿ãŒãã§ã€ã¹ãšããžãã¯éã§è²¬ä»»ãå
±æããããã®MVVMãã¿ãŒã³ã®äœ¿çšã瀺ããŸãã
MVVMãã¶ã€ã³ãã¿ãŒã³ã¯ãWPFãSilverlightãWindows PhoneãWindows RTãªã©ã®Microsoft XAMLãã©ãããã©ãŒã ãšèªç¶ã«èª¿åãããããã»ãšãã©ã®å Žåã«æšå¥šãããŸãã äŸåããããã£ã®ã¡ã«ããºã ãšããŒã¿ãã€ã³ãã£ã³ã°ã®è±å¯ãªãµããŒãã«ããããã¬ãŒã³ããŒã·ã§ã³ã¢ãã«ãšãã¬ãŒã³ããŒã·ã§ã³ãççµåã§çžäºäœçšããããšãã§ããŸãã
ãã¬ãŒã³ããŒã·ã§ã³ããžãã¯ããã¬ãŒã³ããŒã·ã§ã³èªäœããåé¢ããããšã¯ããã¹ããšã¡ã³ããã³ã¹ã®å®¹æããä¿é²ãããã¶ã€ããŒãšããã°ã©ããŒéã®ããåãã®ããã»ã¹ãæ¹åããéèŠãªã¹ãããã§ãã
ãã¥ãŒããŠãŒã¶ãŒã³ã³ãããŒã«ãšããŠäœæããããžãã¯ãå¥ã®ã³ãŒããã¡ã€ã«ã«é
眮ããå Žåããã¥ãŒã®ã€ã³ã¹ã¿ã³ã¹ãäœæãããããä»ããŠããžãã¯ããã¹ãããå¿
èŠãããããããã¹ãããã®ã¯å°é£ã§ãã ããã¯ãèšå€§ãªéã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã®ã¹ã¿ããäœæããå¿
èŠããããšããçç±ã§ãããã€ãã®å°é£ããããããŸãã ãããã£ãŠãã€ã³ãã©ã¹ãã©ã¯ãã£ãžã®äŸåé¢ä¿ãåé€ããã«ã¯ããã¬ãŒã³ããŒã·ã§ã³ããžãã¯ããã¬ãŒã³ããŒã·ã§ã³èªäœããåé¢ããå¿
èŠããããŸãã
ãã¥ãŒãããŒã¿ãã³ãã¬ãŒããšããŠäœæããå Žåã ãã®ãã¥ãŒã«é¢é£ä»ããããã³ãŒãããããŸããã ãã®ãããã³ã³ãããªã³ããžãã¯ãå¥ã®å Žæã«é
眮ããå¿
èŠããããŸãã ãã¹ãå®¹ææ§ãæäŸããã®ãšåãã¢ãããŒããããã¥ãŒã®å±éã«åœ¹ç«ã¡ãŸãã
ãæ³šæ
ãŠããããã¹ããšUIèªååãã¹ãã¯ãã«ãã¬ããžããŸã£ããç°ãªã2ã€ã®ãŸã£ããç°ãªããã¹ãã¢ãããŒãã§ãã åäœãã¹ãã®ãã¹ããã©ã¯ãã£ã¹ã§ã¯ããªããžã§ã¯ããå®å
šã«åé¢ããŠãã¹ãããããšããå§ãããŸãã ãããå®çŸããã«ã¯ããã¹ãŠã®äŸåé¢ä¿ã®åœç©ãšã¹ã¿ããäœæããå¿
èŠããããŸãã ãã®åŸãåäœãã¹ãã¯1ã€ã®ãªããžã§ã¯ãã®ã¿ã§æ©èœããŸãã ãªãŒãã¡ãŒã·ã§ã³UIãã¹ãã¯ã¢ããªã±ãŒã·ã§ã³ãå®è¡ããUIã«ãžã§ã¹ãã£ãŒãé©çšããŠçµæãæ€èšŒããŸãã ãã®ã¿ã€ãã®ãã¹ãã¯ãã³ã³ãããŒã«ãã¢ããªã±ãŒã·ã§ã³ããžãã¯ã«æ£ããæ¥ç¶ãããŠããããšã確èªããããã«å¿
èŠã§ãã
è«çã衚çŸããåé¢ãããšã責任ã®åé¢ãä¿é²ãããŸãã ããã«ããããã¹ãèœåãåäžããã ãã§ãªããUIãã¶ã€ããŒã¯éçºè
ãšã¯ç¬ç«ããŠäœæ¥ã§ããŸãã MVVMãã¿ãŒã³ã®è©³çްã«ã€ããŠã¯ãããŒã5ïŒãMVVMãã¿ãŒã³ã®å®è£
ããåç
§ããŠãã ããã
ã³ãã³ã ãUI ããªã¬ãŒ ã ã¢ã¯ã·ã§ã³ ãããã³åäœ
ãã¬ãŒã³ããŒã·ã§ã³ããžãã¯ãå¥ã®ã³ãŒãã«ããå Žåãã€ãã³ããã³ãã©ãŒã䜿çšããŠUIãšå¯Ÿè©±ããŸãã ãã ããMVVMã䜿çšããå Žåããã¥ãŒã¢ãã«ã¯UIã§çæãããã€ãã³ããçŽæ¥åŠçã§ããŸããã ã€ãã³ããUIãããã¬ãŒã³ããŒã·ã§ã³ã¢ãã«ã«ãªãã€ã¬ã¯ãããã«ã¯ãã³ãã³ããUIããªã¬ãŒãã¢ã¯ã·ã§ã³ããŸãã¯åäœã䜿çšã§ããŸãã
ã³ãã³ãã¯ãã»ãã³ãã£ã¯ã¹ãšããã®ã³ãã³ããåŒã³åºããããªããžã§ã¯ãããã³ãã³ãèªäœã®ããžãã¯ããåé¢ããŸãã ãŸããã³ãã³ããªããžã§ã¯ãã䜿çšãããšããã®ã³ãã³ããçŸåšå®è¡ã§ãããã©ããã倿ã§ããŸãã UIã®ã³ãã³ãã¯ããã¥ãŒã¢ãã«ã®ICommandã¿ã€ãã®ããããã£ã«é¢é£ä»ããããŠããŸãã 詳现ã«ã€ããŠã¯ãããŒã5ã®ãã³ãã³ããã»ã¯ã·ã§ã³ãåç
§ããŠãã ããã
UIããªã¬ãŒãã¢ã¯ã·ã§ã³ãããã³åäœã¯ã
Microsoft.Expression.Interactivity
åå空éã®äžéšã§ãããExpression Blendã«ä»å±ããŠããŸãã Expression SDKã®äžéšã§ããããŸãã ãããã®ã³ã³ããŒãã³ãã¯ãUIã€ãã³ããŸãã¯ã³ãã³ããã€ã³ã¿ãŒã»ããããããããçŸåšã®ããŒã¿ã³ã³ããã¹ããªããžã§ã¯ãã®
ICommand
ããããã£ã«ã«ãŒãã£ã³ã°ããããã®åºç¯ãªAPIãæäŸããŸãã ãããã®è©³çްã«ã€ããŠã¯ãããŒã5ã®é¢é£ã»ã¯ã·ã§ã³ãåç
§ããŠãã ããã
ããŒã¿ãã€ã³ãã£ã³ã°
ããŒã¿ãã€ã³ãã£ã³ã°ã¯ãXAMLãã©ãããã©ãŒã ã®æãéèŠãªæ©èœã§ãã XAMLã䜿çšããã¢ããªã±ãŒã·ã§ã³ãæ£åžžã«æ§ç¯ããã«ã¯ãããŒã¿ãã€ã³ãã£ã³ã°ã«ç²ŸéããŠããå¿
èŠããããŸãã
ããŒã¿ãã€ã³ãã£ã³ã°ã¯ãäŸåããããã£ã·ã¹ãã ã«ãã£ãŠæäŸãããçµã¿èŸŒã¿ã®å€æŽéç¥ã·ã¹ãã ã䜿çšããŸãã
INotifyPropertyChanged
CLRã€ã³ã¿ãŒãã§ã€ã¹ãšçµã¿åããããšããããã®éç¥ã䜿çšããŠã远å ã®ã³ãŒãã䜿çšããã«ãã¬ã·ãŒããŒãšããŒã¿ãã€ã³ãã£ã³ã°ãœãŒã¹éã®å¯Ÿè©±ãæŽçã§ããŸãã
ããŒã¿ãã€ã³ãã£ã³ã°ã䜿çšãããšãå€ã³ã³ããŒã¿ãŒã䜿çšããŠãããŒã¿ã¿ã€ãããšã«äºææ§ã®ãªããœãŒã¹ãšã¬ã·ãŒããŒãæ¥ç¶ã§ããŸãã ãŸããããŒã¿æ€èšŒã®ããã®ããã€ãã®ã¡ã«ããºã ãæäŸããŸãã
å°å
ãªãŒãžã§ã³ã¯ããªãŒãžã§ã³ãããŒãžã£ãŒããªãŒãžã§ã³ããªãŒãžã§ã³ã¢ããã¿ãŒãéããŠPrismã§äœ¿çšã§ããŸãã æ¬¡ã®ã»ã¯ã·ã§ã³ã§ã¯ããããã®ä»çµã¿ãšçžäºäœçšã«ã€ããŠèª¬æããŸãã
å°åã®ãããŒãžã£ãŒ ïŒ å°åãããŒãžã£ãŒ ïŒ
RegionManager
ã¯ã©ã¹
RegionManager
ãã³ã³ãããŒã«å
ã®ãªãŒãžã§ã³ã®ã³ã¬ã¯ã·ã§ã³ãäœæããã³ãããã€ããŸãã
RegionManager
ã¯ãæ°ããé åã察å¿ããã³ã³ãããŒã«ã«é¢é£ä»ããããã«ãåã¿ã€ãã®ã³ã³ãããŒã«ã«åºæã®ã¢ããã¿ãŒã䜿çšããŸãã æ¬¡ã®å³ã¯ããªãŒãžã§ã³ãã³ã³ãããŒã«ãããã³ã¢ããã¿ãŒã®é¢ä¿ã瀺ããŠããŸãã

RegionManagerã¯ãã³ãŒããŸãã¯XAMLã§é åãäœæã§ããŸãã æ·»ä»ãããRegionManager.RegionNameããããã£ã¯ããã®ãªãŒãžã§ã³ã®ãã¹ããšããŠæ©èœããã³ã³ãããŒã«ã«é©çšããããšã«ãããXAMLã§ãªãŒãžã§ã³ãäœæããããã«äœ¿çšãããŸãã
ã¢ããªã±ãŒã·ã§ã³ã«ã¯ã
RegionManager
1ã€ä»¥äžã®ã€ã³ã¹ã¿ã³ã¹ãå«ããããšãã§ããŸãã å°åãããŒãžã£ãŒã®ã©ã®ã€ã³ã¹ã¿ã³ã¹ã§å°åãç»é²ããå¿
èŠãããããéžæããããšãã§ããŸãã ããã¯ãããžã¥ã¢ã«ããªãŒã§ã³ã³ãããŒã«ãç§»åãããããæ·»ä»ããããã£ãã¯ãªã¢ããåŸã«é åãã¯ãªã¢ããããªãå Žåã«åœ¹ç«ã¡ãŸãã
RegionManagerã«ã¯ããªãŒãžã§ã³éã§ããŒã¿ã亀æã§ããæ·»ä»ããã
RegionContext
ããããã£ããããŸãã
ãªãŒãžã§ã³ãäœæãã
ãªãŒãžã§ã³ã¯ã
IRegion
ã€ã³ã¿ãŒãã§ã€ã¹ãå®è£
ããã¯ã©ã¹ã§ãã ãé åããšããçšèªã¯ãåçãªãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã³ã³ãã³ããä¿æã§ããã³ã³ãããŒãæå³ããŸãã ãªãŒãžã§ã³ã«ãããPrismã¯ãã¢ãžã¥ãŒã«ã«å«ãŸããåçã³ã³ãã³ãããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã®å®çŸ©æžã¿ãã¬ãŒã¹ãã«ããŒã«ãã¹ãã§ããŸãã
ãªãŒãžã§ã³ã¯ãããããã¿ã€ãã®UIã³ã³ãã³ããä¿æã§ããŸãã ã¢ãžã¥ãŒã«ã«ã¯ããŠãŒã¶ãŒã³ã³ãããŒã«ãé¢é£ããããŒã¿ãã¿ãŒã³ãæã€ããŒã¿ãç¹æ®ãªã³ã³ãããŒã«ããŸãã¯ãããã®çµã¿åãããšããŠè¡šãããUIã³ã³ãã³ããå«ããããšãã§ããŸãã ããã«ãããUIã§ãšãªã¢ã®å Žæãæå®ããã¢ãžã¥ãŒã«ããããã®ãšãªã¢ã«ã³ã³ãã³ããããŒãã§ããããã«ãªããŸãã
é åã«ã¯ããŒãå以äžã®èŠçŽ ãå«ããããšãã§ããŸãã ç¹å®ã®é åã®ãã¹ããšããŠäœ¿çšãããã³ã³ãããŒã«ã«å¿ããŠã1ã€ä»¥äžã®èŠçŽ ã衚瀺ãããå ŽåããããŸãã ããšãã°ãContentControlã¯1ã€ã®ãªããžã§ã¯ãã®ã¿ã衚瀺ã§ããŸããã
ItemsControl
ã¯äžåºŠã«è€æ°ã®ã¢ã€ãã ã衚瀺ã§ããŸãã
次ã®å³ã§ã¯ã
Stock Trader RIã·ã§ã«ã¯
MainRegion
ã
MainToolbarRegion
ã
ResearchRegion
ãããã³
ActionRegion
ã®4ã€ã®é åã§æ§æãããŠããŸãã ãããã®é åã«ã¯ããŸããŸãªã¢ããªã±ãŒã·ã§ã³ã¢ãžã¥ãŒã«ãé
眮ãããŠããŸããã³ã³ãã³ãã¯ãã€ã§ã倿Žã§ããŸãã

ãªãŒãžã§ã³å
ã®ã¢ãžã¥ãŒã«ãããŠãŒã¶ãŒã³ã³ãããŒã«ã衚瀺ãã
ã¢ãžã¥ãŒã«ãšã³ã³ãã³ããå°åã«ã©ã®ããã«é¢é£ãããã瀺ãããã«ã次ã®å³ãåç
§ããŠãã ããã
WatchModule
ãš
NewsModule
ã®ã·ã§ã«å
ã®å¯Ÿå¿ããé åãšã®é¢é£ä»ãã瀺ããŠããŸãã
MainRegion
é åã«ã¯ã
WatchModule
ã¢ãžã¥ãŒã«ã«å«ãŸãã
WatchListView
ã³ã³ãããŒã«ãå«ãŸããŸãã
ResearchRegion
é åã«ã¯ã
NewsModule
ã¢ãžã¥ãŒã«ã«ãã
ArticleView
ãŠãŒã¶ãŒã³ã³ãããŒã«ãå«ãŸããŸãã
Prismã§äœæãããã¢ããªã±ãŒã·ã§ã³ã§ã¯ããã¶ã€ããŒãéçºè
ãç¹å®ã®å°åã«å«ãŸããã³ã³ãã³ããæ±ºå®ããããã«äœ¿çšããããããã®ãããªãããã³ã°ã¯éçºããã»ã¹ã®èªç¶ãªéšåã«ãªããŸãã ããã«ããããã¶ã€ããŒã¯ãå¿
èŠãªã¹ããŒã¹ã®éãšè¿œå ããå¿
èŠããããã®ã決å®ããŠãæäŸãããã¹ããŒã¹ã«ã³ã³ãã³ãã衚瀺ã§ããŸãã

å°åã®æšæºæ©èœ
é åã䜿çšããããã«å®è£
ã®è©³çްãç¥ãå¿
èŠã¯ãããŸããããã³ã³ãããŒã«ãšé åãäºãã«ã©ã®ããã«é¢é£ä»ããããŠããããçè§£ããããšã¯æçšã§ãã ãŸããæšæºæ©èœã«ã€ããŠã説æããŸããããšãã°ããªãŒãžã§ã³ããã¥ãŒãèŠã€ããŠäœæããæ¹æ³ãã¢ã¯ãã£ãã«ãªã£ããšãã«ãã¥ãŒã«éç¥ããæ¹æ³ããã¥ãŒã®ã©ã€ããµã€ã¯ã«ãã¢ã¯ãã£ãåã«é¢é£ä»ããæ¹æ³ãªã©ã§ãã
以äžã®ã»ã¯ã·ã§ã³ã§ã¯ãå°åã®ã¢ããã¿ãŒãšå°åã®åäœã«ã€ããŠèª¬æããŸãã
ãªãŒãžã§ã³ã¢ããã¿ãŒ
ã³ã³ãããŒã«ããªãŒãžã§ã³ã«çœ®ãæããã«ã¯ãå¿
èŠãªã¢ããã¿ãŒãå¿
èŠã§ãã ãªãŒãžã§ãã«ã¢ããã¿ãŒã¯ããªãŒãžã§ã³ãäœæãããããã³ã³ãããŒã«ã«é¢é£ä»ãã圹å²ãæãããŸãã ããã«ããã
IRegion
ã€ã³ã¿ãŒãã§ã€ã¹ã䜿çšããŠãã³ã³ãããŒã«ã®ã³ã³ãã³ããäžè²«ããæ¹æ³ã§å¶åŸ¡ã§ããŸãã åå°åã®ã¢ããã¿ãŒã¯ãç¹å®ã®çš®é¡ã®å¶åŸ¡ãé©å¿ãããŸãã Prismã¯æ¬¡ã®ã¢ããã¿ãŒãæäŸããŸãã
- ContentControlRegionAdapter ã
System.Windows.Controls.ContentControl
ãšãã®åå«ãé©å¿ãããŸãã - SelectorRegionAdapterã¯ã
System.Windows.Controls.Primitives.Selector
ãšãã®åå«ïŒ System.Windows.Controls.Primitives.Selector
ãªã©ïŒãé©å¿ãããŸãã - ItemsControlRegionAdapterã¯ã
System.Windows.Controls.ItemsControl
ãšãã®åå«ãé©å¿ãããŸãã
ãæ³šæ
SilverlightããŒãžã§ã³ã®Prismã©ã€ãã©ãªã«ã¯ã TabControlRegionAdapter
ãšåŒã°ããå¥ã®ã¢ããã¿ãŒãå«ãŸããŠãTabControlRegionAdapter
ã ããã¯ãSilverlightã®TabControl
ãSelector
ã¯ã©ã¹ã®åå«ã§ã¯ãªããWPFã®å¯Ÿå¿ããTabControl
ãšã¯ç°ãªãåäœãããããã§ãã
å°åè¡å
ããªãºã ã¯ãå°åè¡åã®æŠå¿µãå°å
¥ããŠããŸãã ãããã¯ããªãŒãžã§ã³ã®ã»ãšãã©ã®æ©èœãæ
åœãããã©ã°ã€ã³ã³ã³ããŒãã³ãã§ãã ãã¥ãŒæ€åºãšãªãŒãžã§ã³ã³ã³ããã¹ãããµããŒãããWPFãšSilverlightã®äž¡æ¹ã«äžè²«ããAPIãäœæããããã®åäœãå°å
¥ãããŸããã ããã«ãåäœã«ããããªãŒãžã§ã³ã®æ©èœãæ¡åŒµãã广çãªæ¹æ³ã衚瀺ãããŸãã
åäœã¯ããªãŒãžã§ã³ã«ã¢ã¿ããããã远å ã®æ©èœãæäŸããã¯ã©ã¹ã§ãã è¡åã¯å°åã«å ããããã®ååšãéããŠã¢ã¯ãã£ãã®ãŸãŸã§ãã ããšãã°ã
AutoPopulateRegionBehavior
åå ãã
AutoPopulateRegionBehavior
ã¯ãæå®ãããååãæã€ãªãŒãžã§ã³ã«ç»é²ããããã¥ãŒã¿ã€ããèªåçã«äœæããã³è¿œå ããŸãã ãªãŒãžã§ã³ã®
RegionViewRegistry
æéäžã
RegionViewRegistry
ã®æ°èŠç»é²ãç£èŠãç¶ããŸãã ã¢ããªã±ãŒã·ã§ã³å
šäœãšç¹å®ã®å°åã®äž¡æ¹ã§ãæ°ããåäœã远å ããããæ¢åã®åäœã眮ãæããã®ã¯ç°¡åã§ãã
次ã®ããã€ãã®ã»ã¯ã·ã§ã³ã§ã¯ããªãŒãžã§ã³ã«èªåçã«è¿œå ãããæšæºçãªåäœã«ã€ããŠèª¬æããŸãã äŸå€ã¯
SelectorItemsSourceSyncBehavior
ã®åäœã§ã
Selector
ã¯ã©ã¹ã®åå«ã§ããã³ã³ãããŒã«ã«ã®ã¿ã¢ã¿ããããŸãã
ç»é²åäœ
RegionManagerRegistrationBehavior
ãç®çã®ãªãŒãžã§ã³ãããŒãžã£ãŒã«ãªãŒãžã§ã³ã確å®ã«ç»é²ãããããã«ããŸãã ãã¥ãŒãŸãã¯ã³ã³ãããŒã«ãå¥ã®èŠçŽ ãŸãã¯é åã®åå«ãšããŠããžã¥ã¢ã«ããªãŒã«è¿œå ãããå Žåããã®ã³ã³ãããŒã«ã«é¢é£ä»ããããé åã¯ã芪ã³ã³ãããŒã«ã®RegionManagerã«ç»é²ããå¿
èŠããããŸãã ã³ã³ãããŒã«ãåé€ããããšããªãŒãžã§ã³ç»é²ãåé€ããå¿
èŠããããŸãã
èªå人å£è¡å
2ã€ã®ã¯ã©ã¹ã衚çŸã®æ€çŽ¢ãæ
åœããŸãã ãããã®1ã€ã¯
AutoPopulateRegionBehavior
ã§ãã ãªãŒãžã§ã³ã«åå ãããšããã®ãªãŒãžã§ã³ã®ååã§ç»é²ãããŠãããã¹ãŠã®ã¿ã€ãã®ãã¥ãŒãåãåããŸãã ãã®åŸã圌ã¯ãããã®è¡šçŸã®ã³ããŒãäœæãããªãŒãžã§ã³ã«è¿œå ããŸãã é åãäœæããåŸã
RegionViewRegistry
ã¯ãæå®ãããé ååã®
RegionViewRegistry
ã§ã®æ°ãããã¥ãŒã®ç»é²ãç£èŠããŸãã
ãã¥ãŒã®æ€åºããã»ã¹ãããã«å¶åŸ¡ããå¿
èŠãããå Žåã¯ãç¬èªã®
IRegionViewRegistry
ããã³
AutoPopulateRegionBehavior
å®è£
ãäœæã§ããŸãã
ãªãŒãžã§ã³ã³ã³ããã¹ãã®åäœ
é åã®ã³ã³ããã¹ãã®æ©èœã¯ãšã§å²ãŸãSyncRegionContextWithHostBehavior
ãŠãBindRegionContextToDependencyObjectBehavior
ãŸãããããã®åäœã¯ãé åã«å¯ŸããŠäœæãããã³ã³ããã¹ãã®å€æŽãç£èŠãããã®ã³ã³ããã¹ãããã¥ãŒã«é¢é£ä»ãããã察å¿ããäŸåé¢ä¿ããããã£ãšåæããã圹å²ãæãããŸããã¢ã¯ãã£ããŒã·ã§ã³åäœ
RegionActiveAwareBehavior
ãããã¢ã¯ãã£ããã©ããã®æåºãéç¥ãã責任ããããŸãããããã®éç¥ãåä¿¡ããã«ã¯ããã¥ãŒã«interfaceãå®è£
ããå¿
èŠããããŸãIActiveAware
ããããã®éç¥ã¯åæ¹åã§ãããåäœãããã¬ãŒã³ããŒã·ã§ã³ã«æž¡ãããŸãããã¥ãŒã¯ãã€ã³ã¿ãŒãã§ã€ã¹ã®å¯Ÿå¿ããããããã£ã«åœ±é¿ãäžããŠãããèªäœãã¢ã¯ãã£ãã«ããããšã¯ã§ããŸããIActiveAware
ããªãŒãžã§ã³ã®ã©ã€ãã¿ã€ã åäœ
RegionMemberLifetimeBehavior
éã¢ã¯ãã£ãåããããšãã«èŠçŽ ãé åããåé€ãããã©ãããæ±ºå®ããŸããå°åã®RegionMemberLifetimeBehavior
ã³ã¬ã¯ã·ã§ã³ActiveViews
ãç£èŠããŠãã©ã®ã¢ã€ãã ãéã¢ã¯ãã£ãã«ãªã£ãŠãããã倿ããŸããåäœã¯ãåé€ããèŠçŽ ããã§ãã¯ããåé€ãããšãã«ä¿åãããã©ãIRegionMemberLifetime
ããRegionMemberLifetimeAttribute
ïŒãã®é åºã§ïŒæ±ºå®ããŸããã¢ã€ãã ãããã§ãããªããSystem.Windows.FrameworkElement
ããã¯DataContext
ãŸãå
¥æå¯èœæ§IRegionMemberLifetime
ã«é¢ããŠãã§ãã¯ãããŸãããŸãã¯RegionMemberLifetimeAttribute
ããªãŒãžã§ã³èŠçŽ ã¯ã次ã®é åºã§ãã§ãã¯ãããŸãã- 䟡å€
IRegionMemberLifetime.KeepAlive
- 䟡å€
IRegionMemberLifetime.KeepAlive DataContext
- 䟡å€
RegionMemberLifetimeAttribute.KeepAlive
- 䟡å€
RegionMemberLifetimeAttribute.KeepAlive DataContext
ã³ã³ãããŒã«åºæã®åäœ
SelectorItemsSourceSyncBehavior
WPF Selector
ãªã©ã§ã³ã³ãããŒã«ãããç¶æ¿ãããå Žåã«ã®ã¿äœ¿çšããTabControl
ãŸããã»ã¬ã¯ã¿å
ã®éžæãããèŠçŽ ãšé åå
ã®ã¢ã¯ãã£ããªè¡šçŸãšã®ãããã³ã°ãæ
åœããŸããTabControlRegionSyncBehavior
åæ§ã«SelectorItemsSourceSyncBehavior
ã代ããã«Silverlightã§äœ¿çšãããŸããå°åã®æ©èœã®æ¡åŒµ
Prismã«ã¯ãæäŸãããAPIã®æšæºåäœãæ¡åŒµãŸãã¯ãªãŒããŒã©ã€ãã§ããæ¡åŒµãã€ã³ãããããŸããããšãã°ãç¬èªã®å°åã¢ããã¿ãŒãå°åã®åäœãèšè¿°ããããããã²ãŒã·ã§ã³APIã URIãè§£æããæ¹æ³ã倿Žããããããã²ãŒã·ã§ã³APIãæ¡åŒµããŠSilverlightãã¬ãŒã ããã²ãŒã·ã§ã³ãšé£æºãããã§ããŸãã詳现ã«ã€ããŠã¯ããPrismã®æ¡åŒµããåç
§ããŠãã ããããã¬ãŒã³ããŒã·ã§ã³æ§æ
ãã¥ãŒã®æ§æã¯ããã¥ãŒã®äœææ¹æ³ã§ããè€åã¢ããªã±ãŒã·ã§ã³ã§ã¯ãå®è¡æã«è€æ°ã®ã¢ãžã¥ãŒã«ããã®ãã¥ãŒããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã®ç¹å®ã®å Žæã«è¡šç€ºããå¿
èŠããããŸãããããå®çŸããã«ã¯ããã¥ãŒãé
眮ããé åãšããããã®é åã§ãã¥ãŒãäœæããã³è¡šç€ºããæ¹æ³ãæå®ããå¿
èŠããããŸãã衚çŸã¯ã衚çŸã®çºèŠãéããŠèªåçã«ãããã³è¡šçŸã®å®è£
ãéããŠããã°ã©ã çã«äœæããã³è¡šç€ºã§ããŸãããããã®2ã€ã®ææ³ã¯ãã¢ããªã±ãŒã·ã§ã³ã®ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã§ååä»ãé åã«ãã¥ãŒããããããæ¹æ³ã決å®ããŸããæ€åºè¡šçŸïŒãã¥ãŒãã£ã¹ã«ããªãŒïŒ
ãã®ã¢ãããŒãã§ã¯ãé åã®ååãšã®ãã¥ãŒã®ã¿ã€ããšã®é¢ä¿ãäœæããå¿
èŠããããŸãRegionViewRegistry
ããªãŒãžã§ã³ãäœæããããšãViewTypes
ãã®ãªãŒãžã§ã³ã«é¢é£ãããã¹ãŠã®ãã®ãæ€çŽ¢ããã察å¿ãããã¥ãŒãèªåçã«äœæããã³ããŠã³ããŒããããŸãããããã£ãŠããã®ã¢ãããŒãã§ã¯ããã®é åã«å¯Ÿå¿ãããªãã¬ãŒã³ããŒã·ã§ã³ã®äœæããã³è¡šç€ºæ¹æ³ãçŽæ¥å¶åŸ¡ããããšã¯ã§ããŸããã衚çŸã®å°å
¥ïŒãã¥ãŒãã€ã¯ã€ã³ãžã§ã¯ã·ã§ã³ïŒ
ãã®å Žåãã³ãŒãã¯é åãžã®ãªã³ã¯ãåãåããããã°ã©ã ã§ãã¥ãŒã远å ããŸããéåžžãããã¯ã¢ãžã¥ãŒã«ã®ããŒãäžããŸãã¯ãŠãŒã¶ãŒã®ã¢ã¯ã·ã§ã³ã«å¿ããŠè¡ãããŸããRegionManager
å¿
èŠãªå°åã®ã³ãŒããååã§èŠæ±ããããã«å°å
¥ããå¿
èŠããããŸãããã®ããããã¥ãŒãäœæããŠãªãŒãžã§ã³ã«çœ®ãæããæ¹æ³ããã詳现ã«å¶åŸ¡ã§ããŸãããªãŒãžã§ã³ãããã¥ãŒãåé€ããããšãã§ããŸãããã ãããŸã äœæãããŠããªãé åã«ãã¥ãŒã远å ããããšã¯ã§ããŸãããããã²ãŒã·ã§ã³
Prism Library 4.0ã«ã¯ãããã²ãŒã·ã§ã³APIãå«ãŸããŠããŸããããã²ãŒã·ã§ã³APIã䜿çšãããšãURIãããã²ãŒãããŠãã¥ãŒãç°¡åã«å®è£
ã§ããŸããNavigation APIã¯ãã¥ãŒãäœæãããããé åã«è¿œå ããŠã¢ã¯ãã£ãã«ããŸããããã«ãããã²ãŒã·ã§ã³APIã䜿çšãããšããªãŒãžã§ã³ã«å«ãŸãã以åã«äœæããããã¥ãŒã«ç§»åã§ããŸãã詳现ã«ã€ããŠã¯ãããŒã8 ãããã²ãŒã·ã§ã³ããåç
§ããŠãã ããããã¥ãŒæ€åºã䜿çšããã¿ã€ãã³ã°ãšãã¥ãŒãå°å
¥ããã¿ã€ãã³ã°
é åããŒãæŠç¥ã®éžæã¯ãã¢ããªã±ãŒã·ã§ã³ã®èŠä»¶ãšé åã®æ©èœã«äŸåããŸãããã¥ãŒæ€åºã¯ã次ã®ç¶æ³ã§äœ¿çšã§ããŸãã- ãã¥ãŒãèªåçã«ããŒãããããšãæãŸããããŸãã¯å¿
èŠã§ãã
- ãã¥ãŒã®åäžã®ã€ã³ã¹ã¿ã³ã¹ãé åã«ããŒããããŸãã
å®è£
ãã¥ãŒïŒ- ã¢ããªã±ãŒã·ã§ã³ã¯Navigation APIã䜿çšããŸãã
- ãã¥ãŒã®äœææ¹æ³ãšè¡šç€ºæ¹æ³ãæç€ºçã«å¶åŸ¡ããå¿
èŠããããŸãããŸãã¯ããŠãŒã¶ãŒã®ã¢ã¯ã·ã§ã³ã«å¿ããŠããŸãã¯ããã²ãŒã·ã§ã³ã®çµæãšããŠããã¥ãŒããªãŒãžã§ã³ããåé€ããå¿
èŠããããŸãã
- ãªãŒãžã§ã³ã«åããã¥ãŒã®è€æ°ã®ã€ã³ã¹ã¿ã³ã¹ã衚瀺ããåãã¥ãŒããã®ããŒã¿ã«ãªã³ã¯ããå¿
èŠããããŸãã
- ãã¥ãŒã远å ãããªãŒãžã§ã³ã®ã€ã³ã¹ã¿ã³ã¹ãå¶åŸ¡ããå¿
èŠããããŸããããšãã°ãé¢é£ããæ
å ±é åã®ãã€ã€ãŒã«é¢ããæ
å ±ãå«ããã¥ãŒã远å ããŸãããã®ã¢ãããŒãã§ã¯ãç¯å²ãéå®ãããªãŒãžã§ã³ãäœæããå¿
èŠããããŸãããããã«ã€ããŠã¯åŸã§èª¬æããŸãã
UIãã«ãã·ããªãª
è€åã¢ããªã±ãŒã·ã§ã³ã§ã¯ãå®è¡æã«è€æ°ã®ã¢ãžã¥ãŒã«ããã®ãã¥ãŒããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã®ç¹å®ã®å Žæã«è¡šç€ºãããŸãããããè¡ãã«ã¯ããããã®ãã¥ãŒã衚瀺ãããé åãããã³ãããã®ãã¥ãŒãäœæããããããã®é åã«é¢é£ä»ããããæ¹æ³ãæå®ããå¿
èŠããããŸããã€ã³ã¿ãŒãã§ãŒã¹ã®è¡šç€ºãšè¡šç€ºã®å Žæãåé¢ããããšã«ãããã¢ããªã±ãŒã·ã§ã³ã®å€èгãšã¬ã€ã¢ãŠããããªãŒãžã§ã³ã«ããŒãããã衚瀺ãšã¯ç¬ç«ããŠéçºã§ããŸãã以äžã®ã»ã¯ã·ã§ã³ã§ã¯ãè€åã¢ããªã±ãŒã·ã§ã³ãéçºãããšãã«çºçããäž»ãªã·ããªãªã«ã€ããŠèª¬æããŸããå¿
èŠã«å¿ããŠãStock Trader RIã®äŸããããã®ã·ããªãªã®ãœãªã¥ãŒã·ã§ã³ã瀺ããŸããã·ã§ã«äœæ
ã©ãããŒã¯ããã©ã€ããªUIã³ã³ãã³ããå«ãã¢ããªã±ãŒã·ã§ã³ã®ã«ãŒããªããžã§ã¯ãã§ãã WPFã¢ããªã±ãŒã·ã§ã³ã§ã¯ãã©ãããŒã¯ã€ã³ã¹ã¿ã³ã¹Windows
ã§ãã Silverlightã§- RootVisualUserControl
ãã·ã§ã«ã«ã¯ãã¢ãžã¥ãŒã«ãå¿
èŠãªè¡šçŸã代çšã§ããååä»ãé åãå«ãŸããå ŽåããããŸããã¡ã€ã³ã¡ãã¥ãŒãããŒã«ããŒãªã©ãç¹å®ã®é«ã¬ãã«UIèŠçŽ ãå®çŸ©ããããšãã§ããŸããã·ã§ã«ã¯ãASP.NETãã¹ã¿ãŒããŒãžãšåæ§ã«ãã¢ããªã±ãŒã·ã§ã³ã®åºæ¬æ§é ãšãã¬ãŒã³ããŒã·ã§ã³ãå®çŸ©ããŸããã¹ã¿ã€ã«ãã·ã§ã«èªäœã«è¡šç€ºãããå¢çç·ãããã³ã·ã§ã«ã«ããŒãããããã¥ãŒã«é©çšãããã¹ã¿ã€ã«ããã³ãã¬ãŒããããŒããèšå®ã§ããŸããPrismã䜿çšããŠã¢ããªã±ãŒã·ã§ã³ãäœæããå Žåãã©ãããŒã¯ãªãã·ã§ã³ã§ããæ°ããè€åã¢ããªã±ãŒã·ã§ã³ãäœæããŠããå Žåãã·ã§ã«ãäœæãããšãã¢ããªã±ãŒã·ã§ã³ã®æç¢ºã«å®çŸ©ãããã«ãŒããæäŸãããã¡ã€ã³ã¢ããªã±ãŒã·ã§ã³ã€ã³ã¿ãŒãã§ã€ã¹ã§åæåãã³ãã¬ãŒãã䜿çšå¯èœã«ãªããŸãããã ããPrismãµããŒããæ¢åã®ã¢ããªã±ãŒã·ã§ã³ã«è¿œå ããå Žåãã·ã§ã«ã远å ããããã«ã¡ã€ã³ã¢ãŒããã¯ãã£ã倿Žããå¿
èŠã¯ãããŸããã代ããã«ããŠã£ã³ããŠãŸãã¯ã³ã³ãããŒã«ã®æ¢åã®å®çŸ©ã倿ŽããŠããã¥ãŒã衚瀺ããããã®é åã远å ã§ããŸããã¢ããªã±ãŒã·ã§ã³ã«ã¯è€æ°ã®ã·ã§ã«ãå«ããããšãã§ããŸãããŠãŒã¶ãŒãè€æ°ã®é«ã¬ãã«ãŠã£ã³ããŠãéãããšãã§ããããã«ã¢ããªã±ãŒã·ã§ã³ãèšèšãããŠããå Žåããã®ãããªåãŠã£ã³ããŠã¯ãã®ã³ã³ãã³ãã®ã·ã§ã«ãšããŠæ©èœã§ããŸããStock Trader RI
ã·ã§ã«ãšããŠã®WPF Stock Trader RIã¢ããªã±ãŒã·ã§ã³ã«ã¯ã¡ã€ã³ãŠã£ã³ããŠããããŸããæ¬¡ã®å³ã¯ãã·ã§ã«ãšãã¥ãŒã匷調ããŠããŸããã·ã§ã«ã¯ãã¢ããªã±ãŒã·ã§ã³ã®èµ·åæã«äœæããããã¹ãŠã®ãã¥ãŒãå«ãã¡ã€ã³ãŠã£ã³ããŠã§ããã¢ãžã¥ãŒã«ãå¿
èŠãªè¡šçŸã眮ãæããé åãšãã¿ã€ãã«ããŠã©ãããªã¹ããããŒãªã©ã®ããã€ãã®é«ã¬ãã«ã®ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹èŠçŽ ãå®çŸ©ããŸããStock Trader RI
ã·ã§ã«ã®å®è£
ã¯ããã¡ã€ã«ããã®å¥åã®ã³ãŒããã¡ã€ã«ãããã³ãã¬ãŒã³ããŒã·ã§ã³ã¢ãã«ã§æç€ºãããŸããã¢ãžã¥ãŒã«ããã¥ãŒã远å ããé åã®å®çŸ©ãå«ããã·ã§ã«ã®äžéšã§ããããŒã¯ã¢ããèŠçŽ ãšUIèŠçŽ ãå«ãŸããŸããShell.xaml
Shell.xaml.cs
ShellViewModel.cs
Shell.xaml
次ã®XAMLã¯ãã·ã§ã«ã§å®çŸ©ãããæ§é ãšåºæ¬èŠçŽ ã瀺ããŠããŸããæ·»ä»ããããã£RegionName
ã¯é åãæ±ºå®ããã®ã«åœ¹ç«ã¡ããŠã£ã³ããŠã®èæ¯ç»åã¯ã·ã§ã«ã®èæ¯ç»åã§ããXAML Shell.xamlïŒWPFïŒ <Window x:Class="StockTraderRI.Shell"> <!âshell background --> <Window.Background> <ImageBrush ImageSource="Resources/background.png" Stretch="UniformToFill"/> </Window.Background> <Grid> <Canvas x:Name="Logo"> <TextBlock Text="CFI" ... /> <TextBlock Text="STOCKTRADER" .../> </Canvas> <ItemsControl x:Name="MainToolbar" cal:RegionManager.RegionName="{x:Static inf:RegionNames.MainToolBarRegion}"> </ItemsControl> <Grid> <Controls:AnimatedTabControl x:Name="PositionBuySellTab" cal:RegionManager.RegionName="{x:Static inf:RegionNames.MainRegion}"/> </Grid> <Grid> <ContentControl x:Name="ActionContent" cal:RegionManager.RegionName="{x:Static inf:RegionNames.ActionRegion}"> </ContentControl> </Grid> <Grid x:Name="SideGrid"> <Controls:ResearchControl cal:RegionManager.RegionName="{x:Static inf:RegionNames.ResearchRegion}"> </Controls:ResearchControl> </Grid> </Grid> </Window>
å®è£
ã¯Shell.xaml.cs
éåžžã«ç°¡åã§ããShell
ãšã¯ã¹ããŒãå¯èœã§ãããããããŒãããŒããŒã§äœæã§ããŸãããã®äŸåé¢ä¿ã¯MEFã«ãã£ãŠè§£æ±ºãããŸããã·ã§ã«ã«ã¯ãShellViewModel
MEFã䜿çšããŠäœæäžã«å®è£
ãããã«å¯Ÿããåäžã®äŸåé¢ä¿ããããŸããCïŒShell.xaml.cs [Export] public partial class Shell : Window { public Shell() { InitializeComponent(); } [Import] ShellViewModel ViewModel { set { this.DataContext = value; } } }
CïŒShellViewModel.cs [Export] public class ShellViewModel : NotificationObject {
åé¢ã³ãŒããã¡ã€ã«ã®ã³ãŒãã®éã«ãã£ãŠãè€åã¢ããªã±ãŒã·ã§ã³ã®ã¢ãŒããã¯ãã£ã®èœåãšã·ã³ãã«ããããã³ã·ã§ã«ãšãã¥ãŒéã®æ¥ç¶ã®åŒ±ããè©äŸ¡ã§ããŸããå°åã®èšå®
é åã¯ãå®è¡æã«1ã€ä»¥äžã®ãã¥ãŒã衚瀺ããããŸãŒã³ã®åœ¹å²ãæãããŸããã¢ãžã¥ãŒã«ã¯é åãæ€åºãã衚çŸãããŒãããããšãã§ããŸãããã©ã®ããã«ãã©ãã«é
眮ãããŠãããã¯ããããŸãããããã«ãããã³ã³ãã³ããæäŸããã¢ãžã¥ãŒã«ã«åœ±é¿ãäžããããšãªãããªãŒãžã§ã³ã倿Žããããã«å€æŽã§ããŸãããªãŒãžã§ã³ã¯ãXAMLãŸãã¯ã³ãŒãã§ã³ã³ãããŒã«ã«ãªãŒãžã§ã³åãé¢é£ä»ããããšã§æå®ã§ããŸããé åãžã®ã¢ã¯ã»ã¹ã¯ããã®ååã§ååŸã§ããŸããå®è¡æã«ããã¥ãŒãé åã«è¿œå ãããé åã«é¢é£ä»ããããã³ã³ãããŒã«ã®æ©èœã«åŸã£ãŠè¡šç€ºãããŸããããšãã°ãTabControl
ãã¿ãä»ããã¥ãŒã衚瀺ããŸãããªãŒãžã§ã³ã¯ããã¥ãŒã®è¿œå ãšåé€ããµããŒãããŸãããã¥ãŒã¯ãããã°ã©ã ãšèªåã®äž¡æ¹ã§äœæããã³è¡šç€ºã§ããŸãã Prismã§ã¯ãããã¯ãã¥ãŒã®åã蟌ã¿ãšãã¥ãŒã®çºèŠã䜿çšããŠå®çŸãããŸãããããã®2ã€ã®ææ³ã«ããããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã§åã
ã®ãã¥ãŒãååä»ãé åã«ãããããæ¹æ³ã決ãŸããŸããã¢ããªã±ãŒã·ã§ã³ã·ã§ã«ã¯ãæé«ã¬ãã«ã®ããŒã¯ã¢ãããå®çŸ©ããŸããããšãã°ã次ã®å³ã«ç€ºãããã«ãã¡ã€ã³ã³ã³ãã³ããšããã²ãŒã·ã§ã³ã³ã³ãã³ãã®å Žæãèšå®ããŸãããããã®é«ã¬ãã«ãã¥ãŒå
ã®ããŒã¯ã¢ããã¯åæ§ã®æ¹æ³ã§å®çŸ©ã§ãããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ãååž°çã«ã³ã³ãã€ã«ã§ããŸãã
ãªãŒãžã§ã³ã¯ãããã€ãã®è«ççã«é¢é£ãããã¥ãŒã®å Žæãæå®ããããã«äœ¿çšãããå ŽåããããŸãããã®å ŽåããªãŒãžã§ã³ã¯éåžžãItemsControlãŸãã¯ãã®åŸç¶ã§ãããã¢ã€ãã ãã¹ã¿ãã¯ãã¿ãã«é
眮ãããªã©ãã¬ã€ã¢ãŠãæŠç¥ã«åŸã£ãŠãã¥ãŒã衚瀺ããŸããé åã¯ãŸããäŸãã°ã䜿çšããŠãåäžã®è¡šçŸã®äœçœ®ãç¹å®ããããã«äœ¿çšããããšãã§ããŸãContenControl
ããã®å ŽåããªãŒãžã§ã³ã«é¢é£ä»ããããã³ã³ãããŒã«ã«ã¯ãè€æ°ã®ãã¥ãŒããªãŒãžã§ã³ã«è¿œå ãããŠããŠããäžåºŠã«1ã€ã®ãã¥ãŒãã衚瀺ãããŸãããæ ªåŒãã¬ãŒããŒRIã·ã§ã«ã®å°å
Stock Trader RIã¯ãå°åã«è¿œå ãããåäžã®ãã¥ãŒãšè€æ°ã®ãã¥ãŒã®äž¡æ¹ã䜿çšããã¢ãããŒãã®äŸãæäŸããŸããã¢ããªã±ãŒã·ã§ã³ã·ã§ã«ã§äž¡æ¹ã®ã¢ãããŒãã確èªã§ããŸããæ¬¡ã®å³ã¯ãStock Trader RIã·ã§ã«ã§å®çŸ©ãããå°åã瀺ããŠããŸããæ ªåŒã売買ããéã«
ãæ ªåŒãã¬ãŒããŒRIã§ãã«ããã¥ãŒã¢ãããŒããèŠãããšãã§ããŸãã以äžã«ç€ºãããã«ãè²·ã/売ããšãªã¢ã¯ãªã¹ãã®ãããªé åã§OrderCompositeView
ããªã¹ãé
ç®ãšããŠè¡šç€ºãããŸãã
ã·ã§ã«é åã«ActionRegion
ã¯ãå«ãŸããŸãOrdersView
ãOrdersView
[ ãã¹ãŠéä¿¡] ãã¿ã³ãš[ ãã¹ãŠãã£ã³ã»ã«]ãã¿ã³ãããã³å°åãå«ãŸããŠããŸãOrdersRegion
ãOrdersRegion
ListBox
è€æ°ã®ãã¥ãŒã衚瀺ããã³ã³ãããŒã«ã«æ·»ä»ãããŸãOrderCompositeViews
ãIRegionã€ã³ã¿ãŒãã§ã€ã¹
é åã¯ãã€ã³ã¿ãŒãã§ãŒã¹ãå®è£
ããã¯ã©ã¹ã§ãIRegion
ããªãŒãžã§ã³ã¯ãã³ã³ãããŒã«ã«è¡šç€ºããã³ã³ãã³ããå«ãã³ã³ããã§ããæ¬¡ã®ã³ãŒãã¯ããã®ã€ã³ã¿ãŒãã§ãŒã¹ã«å«ãŸãããã®ã瀺ããŠããŸãã public interface IRegion : INavigateAsync, INotifyPropertyChanged { IViewsCollection Views { get; } IViewsCollection ActiveViews { get; } object Context { get; set; } string Name { get; set; } Comparison<object> SortComparison { get; set; } IRegionManager Add(object view); IRegionManager Add(object view, string viewName); IRegionManager Add(object view, string viewName, bool createRegionManagerScope); void Remove(object view); void Deactivate(object view); object GetView(string viewName); IRegionManager RegionManager { get; set; } IRegionBehaviorCollection Behaviors { get; } IRegionNavigationService NavigationService { get; set; } }
XAMLãžã®é åã®è¿œå
RegionManager
XAMLã§é åãç°¡åã«äœæããããã«äœ¿çšã§ããæ·»ä»ããããã£ãæäŸããŸãããã®ã¢ãããŒãã䜿çšããã«ã¯ãXAMLã§Prismåå空éã远å ããæ·»ä»ããããã£ã䜿çšããå¿
èŠããããŸãRegionName
ãæ¬¡ã®äŸã¯ããªãŒãžã§ã³ãèŠçŽ ã«é¢é£ä»ããæ¹æ³ã瀺ããŠããŸãAnimatedTabControl
ãé åã®ååã§æååãååŸããããã«MainRegion
ãããŒã¯ã¢ããæ¡åŒµæ©èœã䜿çšããx:Static
ãŸããããã«ãããXAMLã§ã®ããžãã¯ã¹ããªã³ã°ã®äœ¿çšãåé¿ãããŸãã <Controls:AnimatedTabControl x:Name="PositionBuySellTab" cal:RegionManager.RegionName="{x:Static inf:RegionNames.MainRegion}"/>
Silverlight 4ã¯äœ¿çšãèš±å¯ããŸããx:Static
ããããã£ãŠãæååå€ã䜿çšããŠé åãæå®ããããå¿
èŠã«å¿ããŠããããã®ååãå«ãŸããã¢ããªã±ãŒã·ã§ã³å
šäœã§äœ¿çšå¯èœãªæååãªãœãŒã¹ã決å®ããå¿
èŠããããŸããRegionName
ãã®ã¢ãããŒãã䜿çšããŠãæ·»ä»ããããã£ããã®ãããªãªãœãŒã¹ã«é¢é£ä»ããŠãé åã®ååãååŸã§ããŸãã <Controls:AnimatedTabControl Regions:RegionManager.RegionName="MainRegion" />
ã³ãŒãã§é åã远å ãã
ããã䜿çšRegionManager
ãããšãXAMLã䜿çšããã«ã³ãŒãå
ã§é åãçŽæ¥ç»é²ã§ããŸããæ¬¡ã®ã³ãŒãäŸã¯ãå¥ã®ã³ãŒããã¡ã€ã«ã§é åãã³ã³ãããŒã«ã«é¢é£ä»ããæ¹æ³ã瀺ããŠããŸããéå§ããã«ã¯ãå°åãããŒãžã£ãŒãžã®ãªã³ã¯ãååŸããå¿
èŠããããŸããæ¬¡ã«ãéçã¡ãœããRegionManager.SetRegionManager
ããã³ã䜿çšããŠRegionManager.SetRegionName
ãé åãã³ã³ãããŒã«ActionContent
ã«é¢é£ä»ããããŸãããã®åŸããã®ååã¯"ActionRegion"ã«èšå®ãããŸãã IRegionManager regionManager = ServiceLocator.Current.GetInstance<IRegionManager>(); RegionManager.SetRegionManager(this.ActionContent, regionManager); RegionManager.SetRegionName(this.ActionContent, "ActionRegion");
ãªãŒãžã§ã³ãããŒããããšãã«ãã¥ãŒã衚瀺ãã
衚çŸã®çºèŠã«è¿ã¥ããšãã¢ãžã¥ãŒã«ã¯ç¹å®ã®ååä»ãé åã«è¡šçŸïŒãã¬ãŒã³ããŒã·ã§ã³ã¢ãã«ããã¬ãŒã³ã¿ãŒã¢ãã«ïŒãç»é²ã§ããŸããå®è¡æã«é åã衚瀺ããããšããã®é åã«ç»é²ãããŠãããã¥ãŒãäœæãããèªåçã«è¡šç€ºãããŸããã¢ãžã¥ãŒã«ã¯ãã¬ãžã¹ã¿ã䜿çšããŠè¡šçŸãç»é²ããŸãã芪ãµãããã·ã§ã³ã¯ãæå®ãããååã§ãªãŒãžã§ã³ã«ç»é²ãããŠããã¬ãžã¹ããªãµãããã·ã§ã³ããèŠæ±ã§ããŸããæ€åºããããšã芪ãã¥ãŒã¯ãããã®ãã¥ãŒãç»é¢ã«é
眮ãããªãŒãžã§ã³ã«é¢é£ä»ããããã³ã³ãããŒã«ã«è¿œå ããŸããã¢ããªã±ãŒã·ã§ã³ãããŒãããåŸãè€åãã¥ãŒã¯ããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã®ã¬ãžã¹ã¿ã«è¿œå ãããæ°ãããã¥ãŒãé
眮ããå¿
èŠããããšããéç¥ãåãåããŸããæ¬¡ã®å³ã¯ããã¥ãŒæ€åºã¢ãããŒãã瀺ããŠããŸãã
ããªã ã¯ãRegionViewRegistry
ååä»ããªãŒãžã§ã³ã«æåºç©ãç»é²ããããã®æšæºç»é²ã¯ã©ã¹ãæäŸããŸããé åã«ãã¥ãŒã衚瀺ããã«ã¯ãé åãããŒãžã£ãŒã«ãã¥ãŒãç»é²ããå¿
èŠããããŸããæ¬¡ã®äŸã«ç€ºãããã«ããã¥ãŒã®ã¿ã€ããçŽæ¥æå®ã§ããŸãããã®åŸããã¥ãŒã¯ãé åãããŒããããšãã«äŸåæ§æ³šå
¥ã³ã³ãããä»ããŠè§£æ±ºãããŸãã this.regionManager.RegisterViewWithRegion("MainRegion", typeof(EmployeeView));
以äžã«ç€ºãããã«ãå¿
èŠãªãã¥ãŒãè¿ãããªã²ãŒããæäŸããããšãã§ããŸãããªãŒãžã§ã³ã®äœææã«ããªãŒãžã§ã³ãããŒãžã£ãŒããã¥ãŒã衚瀺ããŸãã this.regionManager.RegisterViewWithRegion("MainRegion", () => this.container.Resolve<EmployeeView>());
UIã®æ§æQuickStarã¯ã§ã¹ããããã€ã¹ãããã¬ã€ãæã€EmployeeModule ModuleInit.cs
ã¡ãœããã䜿çšããæ¹æ³ã瀺ãããã¡ã€ã«ãRegisterViewWithRegion
ãããã°ã©ã ã§é åã«è¡šçŸã衚瀺ãã
ãã¥ãŒãå°å
¥ããã¢ãããŒãã§ã¯ãã¢ãžã¥ãŒã«ãæ
åœããé åã«ããã°ã©ã ã§è¿œå ãŸãã¯åé€ãããŸãããããå¯èœã«ããããã«ãã¢ããªã±ãŒã·ã§ã³ã¯ããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã§å®£èšãããååä»ãé åã®ã¬ãžã¹ã¿ãç¶æããŸããã¢ãžã¥ãŒã«ã¯ããã®ã¬ãžã¹ã¿ã䜿çšããŠãããããé åãååŸããããã°ã©ã ã§ãã¥ãŒãæ¿å
¥ã§ããŸããã¢ããªã±ãŒã·ã§ã³å
šäœã§é åãžã®ã¢ã¯ã»ã¹ãåäžã«ããããã«ãåååä»ãé åã¯ã€ã³ã¿ãŒãã§ãŒã¹ãå®è£
ããŸãIRegion
ãæ¬¡ã®å³ã¯ããã¥ãŒãå°å
¥ããã¢ãããŒãã瀺ããŠããŸãã
ãã¥ãŒããªãŒãžã§ã³ã«å°å
¥ããã«ã¯ããªãŒãžã§ã³ãããŒãžã£ãŒãä»ããŠãã®ãªãŒãžã§ã³ãååŸããã¡ãœãããåŒã³åºãå¿
èŠããããŸãAdd
以äžã«ç€ºãããã«ããã®ã¢ãããŒãã§ã¯ããã¥ãŒããªãŒãžã§ã³ã«è¿œå ããåŸã«ã®ã¿è¡šç€ºãããŸããããã¯ãã¢ãžã¥ãŒã«ã®ããŒãåŸããŸãã¯ãŠãŒã¶ãŒã®ã¢ã¯ã·ã§ã³ã«å¿ããŠçºçããŸãã IRegion region = regionManager.Regions["MainRegion"]; var ordersView = container.Resolve<OrdersView>(); region.Add(ordersView, "OrdersView"); region.Activate(ordersView);
Stock Trader RIããã³UI Composition QuickStartã¯ããã®ã¢ãããŒããé©çšããããã®æ®µéçãªã¬ã€ããæäŸããŸããããã²ãŒã·ã§ã³
Prism Library 4.0ã«ã¯ãWPFãŸãã¯Silverlightã¢ããªã±ãŒã·ã§ã³ãããã²ãŒãããããã®è±å¯ã§äžè²«ããã¢ãããŒããæäŸããããã²ãŒã·ã§ã³APIãå«ãŸããŠããŸãããªãŒãžã§ã³ããã²ãŒã·ã§ã³ã¯ããã¥ãŒãå°å
¥ããå Žåã§ããããã²ãŒã·ã§ã³èŠæ±ã®åŠçäžã«ãèŠæ±ãæºããããšãã§ããé åå
ã®è¡šçŸãèŠã€ããããšããŸããé©åãªãã¥ãŒãèŠã€ããããšãã§ããªãå Žåãå¿
èŠãªãã¥ãŒãDIã³ã³ãããä»ããŠäœæããããã®åŸã¿ãŒã²ããé åã«å®è£
ãããŠã¢ã¯ãã£ãåãããŸããæ¬¡ã®ã³ãŒãã¯ãStock Trader RIã® äŸã䜿çšããŠArticleViewModel
ããã²ãŒã·ã§ã³èŠæ±ãéå§ããæ¹æ³ã瀺ããŠããŸãã this.regionManager.RequestNavigate(RegionNames.SecondaryRegion, new Uri("/NewsReaderView", UriKind.Relative));
詳现ã«ã€ããŠã¯ãããŒã8ãããã²ãŒã·ã§ã³ã»ã¯ã·ã§ã³ãåç
§ããŠãã ããããã¥ãŒåãæ¿ãããã²ãŒã·ã§ã³ã¯ã€ãã¯ã¹ã¿ãŒããšç¶æ
ããŒã¹ã®ããã²ãŒã·ã§ã³ã¯ã€ãã¯ã¹ã¿ãŒãããã®ã¢ãããŒãã®äŸã§ãããªãŒãžã§ã³å
ã®ãã¥ãŒã®é åºä»ã
é åãè€æ°ã®ãã¥ãŒã®è¡šç€ºããµããŒãããã³ã³ãããŒã«ã«é¢é£ä»ããããŠããå Žåã䜿çšããæ¹æ³ã«é¢ä¿ãªããã¢ããªã±ãŒã·ã§ã³ã¯ç¹å®ã®ã³ã³ãã©ã¯ãã®é åã«ãã¥ãŒãé
眮ããå¿
èŠããããŸããããã©ã«ãã§ã¯ããã¥ãŒã¯ãç»é²ãããŠãã®é åã«è¿œå ãããé åºã§é åã«é
眮ãããŸããè€åã¢ããªã±ãŒã·ã§ã³ãäœæãããšãããã¥ãŒã¯ãã°ãã°ç°ãªãã¢ãžã¥ãŒã«ã«ç»é²ãããŸããã¢ãžã¥ãŒã«éã®äŸåé¢ä¿ãäœæããããšã§ãã®åé¡ã解決ã§ããŸãããããã¯æé©ãªã¢ãããŒãã§ã¯ãããŸããããªãŒãžã§ã³å
ã§ã®ãã¥ãŒã®é
çœ®æ¹æ³ãå¶åŸ¡ããããã«ãPrismã¯å±æ§ãæäŸããŸãViewSortHint
ãæååããããã£ãå«ãŸããŠããŸããHint
ããã¥ãŒã§å°åå
ã«ã©ã®ããã«é
眮ããããã«ã€ããŠã®ãã³ããäžããããšãã§ããŸãããã¥ãŒã衚瀺ãããšããã¯ã©ã¹Region
ã¯ãã®ãã³ããèæ
®ããæšæºã®ãœãŒãæé ã䜿çšããŸããããã¯ãæååã®åçŽã§å€§æåãšå°æåãåºå¥ãããœãŒãã§ãããã®å±æ§ãæã€ãã¥ãŒã¯ãœãŒããããããããªããã¥ãŒã®åã«é
眮ãããŸãã屿§ã®ãªããã¥ãŒã¯ããªãŒãžã§ã³ã«è¿œå ãããé åºã§é
眮ãããŸãããã¥ãŒãå°åããšã«ãœãŒããããæ¹æ³ã倿Žãããå Žåãã¯ã©ã¹Region
ã«ã¯ããããã£ãããSortComparison
ããããä»ããŠç¬èªã®ããªã²ãŒããèšå®ã§ããŸãComparison<object>
ãå°åã®ããããã£ã®äžŠã¹æ¿ãViews
ãšActiveViews
ãªã©ã®ã¢ããã¿ItemsControlRegionAdapter
ããããã®ããããã£ã«çŽæ¥ãã€ã³ãããããããUIã«åæ ãããŸããã«ã¹ã¿ã ã¢ããã¿ãŒã¯ç¬èªã®äžŠã¹æ¿ãã¡ãœãããå®è£
ã§ããŸãããã®ã¡ãœããã¯ãé åã§å®è¡ããããã¥ãŒã®äžŠã¹æ¿ãããªãŒããŒã©ã€ãããŸãããã¥ãŒåãæ¿ãã¯ã€ãã¯ã¹ã¿ãŒãã¯ãçªå·ä»ãã䜿çšããŠããã²ãŒã·ã§ã³é åã®ãã¥ãŒãæŽçããç°¡åãªå³ã瀺ããŸããæ¬¡ã®äŸã§ViewSortHint
ã¯ãããã²ãŒã·ã§ã³ãæ
åœããåãã¥ãŒã«é©çšãããŸãã [Export] [ViewSortHint("01")] public partial class EmailNavigationItemView { ⊠} [Export] [ViewSortHint("02")] public partial class CalendarNavigationItemView { ⊠} [Export] [ViewSortHint("03")] public partial class ContactsDetailNavigationItemView { ⊠} [Export] [ViewSortHint("04")] public partial class ContactsAvatarNavigationItemView { ⊠}
è€æ°ã®å°åéã§ã®ããŒã¿äº€æ
ããªã ã¯ãã·ããªãªã«å¿ããŠããã¥ãŒéã§å¯Ÿè©±ããããã®ããã€ãã®ã¢ãããŒããæäŸããŸãããªãŒãžã§ã³ãããŒãžã£ãŒã¯ãRegionContext
ãã®ãããªã¢ãããŒãã®1ã€ãšããŠããããã£ãæäŸããŸããRegionContext
芪ãã¥ãŒãšåãã¥ãŒã§å
±éã®ããŒã¿ã³ã³ããã¹ãã䜿çšããå Žåã«äŸ¿å©ã§ããRegionContext
æ·»ä»ããããã£ã§ãããã®ããããã£ã䜿çšããŠå¿
èŠãªã³ã³ããã¹ããèšå®ãããšã察å¿ãããªãŒãžã§ã³ã«è¿œå ãããåãã¥ãŒã§äœ¿çšã§ããããã«ãªããŸããããã¯ãããŒã¿ãã€ã³ãã£ã³ã°ãå®è¡ã§ããåçŽãªãªããžã§ã¯ãã§ãè€éãªãªããžã§ã¯ãã§ãããŸããŸãããRegionContext
衚çŸã®æ€åºãšå®è£
ã®äž¡æ¹ã§äœ¿çšã§ããŸãããæ³šæ
DataContext
Silverlightããã³WPF ã®ããããã£ã¯ããã¬ãŒã³ããŒã·ã§ã³ã®ããŒã«ã«ããŒã¿ã³ã³ããã¹ããèšå®ããããã«äœ¿çšãããŸããããã«ããããã¥ãŒã¯ããŒã¿ãã€ã³ãã£ã³ã°ã䜿çšããŠããã¥ãŒã¢ãã«ãããŒã«ã«ãã¬ãŒã³ã¿ãŒããŸãã¯ã¢ãã«ãšå¯Ÿè©±ã§ããŸããRegionContext
è€æ°ã®ãã¥ãŒã«ããã£ãŠã³ã³ããã¹ããå
±æããããã«äœ¿çšãããåäžã®ãã¥ãŒã«å¯ŸããŠããŒã«ã«ã§ã¯ãããŸãããããã«ãããè€æ°ã®ãã¥ãŒéã§ã³ã³ããã¹ããå
±æããããã®ã·ã³ãã«ãªã¡ã«ããºã ãæäŸãããŸãã
次ã®ã³ãŒãã¯ãæ·»ä»ããããã£ãRegionContext
XAMLã§ã©ã®ããã«äœ¿çšããããã瀺ããŠããŸãã <TabControl AutomationProperties.AutomationId="DetailsTabControl" cal:RegionManager.RegionName="{x:Static local:RegionNames.TabRegion}" cal:RegionManager.RegionContext="{Binding Path=SelectedEmployee.EmployeeId}" ... >
RegionContext
以äžã«ç€ºãããã«ã³ãŒãã§ã€ã³ã¹ããŒã«ããããšãã§ããŸãã RegionManager.Regions["Region1"].Context = employeeId;
ãã¥ãŒã®ã³ã³ããã¹ããååŸããã«ã¯ãéçã¡ãœããã䜿çšã§ããŸãRegionContext.GetObservableContext
ãæ¬¡ã«ç€ºãããã«ããã¥ãŒããã©ã¡ãŒã¿ãŒãšããŠåãåãããã®åŸãããããã£ãä»ããŠã³ã³ããã¹ãã«ã¢ã¯ã»ã¹ã§ãValue
ãŸãã private void GetRegionContext() { this.Model.EmployeeId = (int)RegionContext.GetObservableContext(this).Value; }
å€ã¯ãRegionContext
æ°ããããããã£å€ã®åçŽãªä»£å
¥ã«ãã£ãŠå€æŽããããšãã§ããŸãValue
ããã¥ãŒã¯ãã¡ãœãããåŒã³åºããŠååŸã§ããPropertyChanged
ã¿ã€ãã®ãªããžã§ã¯ãã®ã€ãã³ãã䜿çšããŠãã³ã³ããã¹ã倿Žéç¥ããµãã¹ã¯ã©ã€ãObservableObject
ã§ããŸãGetObservableContext
ãããã«ãããã³ã³ããã¹ãã倿Žããããšãã«è€æ°ã®ãã¥ãŒãåæã§ããŸããæ¬¡ã®äŸã¯ãã³ã³ããã¹ãã®å€æŽããµãã¹ã¯ã©ã€ãããæ¹æ³ã瀺ããŠããŸãã ObservableObject<object> viewRegionContext = RegionContext.GetObservableContext(this); viewRegionContext.PropertyChanged += this.ViewRegionContext_OnPropertyChangedEvent; private void ViewRegionContext_OnPropertyChangedEvent(object sender, PropertyChangedEventArgs args) { if (args.PropertyName == "Value") { var context = (ObservableObject<object>) sender; int newValue = (int)context.Value; } }
ãæ³šæ
RegionContext
, , , DependencyObject
. , , DependencyObject
. , , , . , RegionContext
, DependencyObject
.
ã¹ã³ãŒããå¶éãããé åã¯ããã¥ãŒå®è£
ã䜿çšããå Žåã«ã®ã¿äœ¿çšã§ããŸããå°åã®ç¬èªã®ã€ã³ã¹ã¿ã³ã¹ã䜿çšãããã¬ãŒã³ããŒã·ã§ã³ãå¿
èŠãªå Žåã«å¿
èŠã«ãªãããšããããŸããæ·»ä»ããããã£ã䜿çšããŠé åãæå®ãããã¥ãŒã¯ãèªåçã«èŠªãç¶æ¿ãRegionManager
ãŸããéåžžãããã¯RegionManager
ã·ã§ã«ã«ç»é²ãããŠããã¢ããªã±ãŒã·ã§ã³å
šäœã«å
±éã§ããã¢ããªã±ãŒã·ã§ã³ããã®ã¿ã€ãã®è€æ°ã®è¡šçŸãäœæããå Žåãããããã¯åã衚çŸã䜿çšããŠRegionManager
ãã®é åãç»é²ããŸãããªãŒãžã§ã³ã®ãããŒãžã£ãŒã¯ãªãŒãžã§ã³ã®äžæã®ååã®ã¿ãèš±å¯ããããããã¥ãŒã§ã®ãªãŒãžã§ã³ã®2åç®ã®ç»é²ã¯äŸå€ãã¹ããŒããŸãããããé²ãããã«ãç¯å²ãå¶éãããé åã䜿çšã§ããŸãããã®å Žåãå代衚ã¯ç¬èªã®å°åãããŒãžã£ãŒãæã¡ããã®å°åã¯èŠªã§ã¯ãªããã®ç¹å®ã®ãããŒãžã£ãŒã䜿çšããŠç»é²ãããŸãããã®ã¢ãããŒããæ¬¡ã®å³ã«ç€ºããŸãã
ãªãŒãžã§ã³ãããŒãžã£ãŒã®ããŒã«ã«ãããŒãžã£ãŒãäœæããã«ã¯ãRegionManager
以äžã«ç€ºãããã«ããªãŒãžã§ã³ã«ãªãŒãžã§ã³ã远å ãããšãã«æ°ãããããŒãžã£ãŒãäœæããããã«æå®ããå¿
èŠããããŸãã IRegion detailsRegion = this.regionManager.Regions["DetailsRegion"]; View view = new View(); bool createRegionManagerScope = true; IRegionManager detailsRegionManager = detailsRegion.Add(view, null, createRegionManagerScope);
Addã¡ãœããã¯ãæ°ãããªãŒãžã§ã³ãããŒãžã£ãŒãè¿ããŸãããã®ãªãŒãžã§ã³ãããŒãžã£ãŒã䜿çšããŠãããŒã«ã«ã¹ã³ãŒããããªãŒãžã§ã³ã«ä»¥éã¢ã¯ã»ã¹ããããã«ãã¥ãŒãä¿åã§ããŸãããã¥ãŒãäœæãã
ã¢ããªã±ãŒã·ã§ã³ã®å€èгã¯ããŠãŒã¶ãŒã³ã³ãããŒã«ãç¹å¥ãªã³ã³ãããŒã«ãããŒã¿ãã³ãã¬ãŒããªã©ã®ããŸããŸãªèŠçŽ ããäœæã§ããŸããStock Trader RIã®å ŽåããŠãŒã¶ãŒã³ã³ãããŒã«ã¯éåžžãã¡ã€ã³ãŠã£ã³ããŠã®ç°ãªãé åã衚ãããã«äœ¿çšãããŸãããããã¯æšæºã§ã¯ãããŸãããã¢ããªã±ãŒã·ã§ã³ã§ã¯ãæã銎æã¿ã®ããããã¶ã€ããŒã«ãšã£ãŠæé©ãªã¢ãããŒããé©çšããå¿
èŠããããŸããã¢ããªã±ãŒã·ã§ã³ã®å€èгã«é¢ä¿ãªããã»ãšãã©ã®å ŽåããŠãŒã¶ãŒã³ã³ãããŒã«ãç¹å¥ãªã³ã³ãããŒã«ãããã³ããŒã¿ãã³ãã¬ãŒããçµã¿åãããŠäœ¿çšââããŸããæ¬¡ã®å³ã¯ãæ ªåŒãã¬ãŒããŒRIãã¢ãããŒãã䜿çšããå Žæã瀺ããŠããŸãããŸããåã¢ãããŒãã説æããåŸç¶ã®ã»ã¯ã·ã§ã³ã§åç
§ãããŸãã
ãŠãŒã¶ãŒã³ã³ãããŒã«
Expression BlendãšVisual Studio 2010-2012ã¯ããããã®ã³ã³ãããŒã«ãäœæããããã®è±å¯ãªãµããŒããæäŸããŸãããããã®ããŒã«ã䜿çšããŠäœæããããŠãŒã¶ãŒã³ã³ãããŒã«ã¯ãPrismã䜿çšããå Žåã®ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã®äœæã«æšå¥šãããŸããåè¿°ã®ããã«ãStock Trader RIã¯ããããåºç¯å²ã«äœ¿çšããŠå°åã³ã³ãã³ããäœæããŸããWatchListView.xamlãŠãŒã¶ãŒã³ã³ãããŒã«ã¯ããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã®å°ããªéšåãWatchModuleã¢ãžã¥ãŒã«å
ã«é
眮ããæ¹æ³ã®è¯ãäŸã§ãããããã®ã³ã³ãããŒã«ã¯ãäœæãšäœ¿çšãéåžžã«ç°¡åã§ç°¡åã§ããç¹å¥ãªã³ã³ãããŒã«ïŒã«ã¹ã¿ã ã³ã³ãããŒã«ïŒ
ç¶æ³ã«ãã£ãŠã¯ããŠãŒã¶ãŒã³ã³ãããŒã«ãå¶éãããããå ŽåããããŸãããããã®å Žåãã«ã¹ã¿ã ããŒã¯ã¢ãããã€ãŸãæ¡åŒµæ§ã¯ãäœæã®å®¹æããããéèŠãªå ŽåããããŸãããã®ãããªå Žåãç¹å¥ãªã³ã³ãããŒã«ã圹ç«ã€å ŽåããããŸããã¹ããã¯ãã¬ãŒããŒRIããã®è¯ãäŸã¯ãå圢ãã¿ãŒã³ã®å¶åŸ¡ã§ãããã®ã¿ã€ãã®ã³ã³ãããŒã«ã¯ãã«ã¹ã¿ã ã³ã³ãããŒã«ãããäœæãé£ãããã«ã¹ã¿ã ã³ã³ãããŒã«ãšæ¯èŒããŠãExpression Blendããã³Visual Studio 2010-2012ã§ã®äœæã®ãµããŒããå¶éãããŠããŸãããã³ãã¬ãŒãããŒã¿ïŒããŒã¿ãã³ãã¬ãŒãïŒ
ããŒã¿ãã³ãã¬ãŒãã¯ãã»ãšãã©ã®çš®é¡ã®ããŒã¿ã¢ããªã±ãŒã·ã§ã³ã®éèŠãªéšåã§ãããªã¹ãããŒã¹ã®ã³ã³ãããŒã«ã§ã®ããŒã¿ãã³ãã¬ãŒãã®äœ¿çšã¯ãç¹ã«Stock Trader RIã§äžè¬çã§ããå€ãã®å ŽåãããŒã¿ãã³ãã¬ãŒãã䜿çšãããšãã«ã¹ã¿ã ã³ã³ãããŒã«ããŸã£ããäœæããã«å®è¡ã§ããŸããé åResearchRegion
ã¯ããŒã¿ãã³ãã¬ãŒãã䜿çšããŠèšäºã衚瀺ããã®ã¹ã¿ã€ã«ãšãšãã«Items
ãã©ã®ã¢ã€ãã ã匷調衚瀺ãããŠãããã瀺ããŸããExpression Blendã¯ãããŒã¿ãã³ãã¬ãŒãã®èŠèŠçãªäœæãå®å
šã«ãµããŒãããŠããŸãã Visual Studio 2010ã¯ãXAMLãä»ããŠã®ã¿ç·šéããŒã¿ãã³ãã¬ãŒããæäŸããŸãã Visual Studio 2012ã§ã¯ãããžã¥ã¢ã«ãšãã£ã¿ãŒã¯Expression BlendããååŸããããããExpression Blendèªäœãšã»ãŒåãããŒã¿ãã³ãã¬ãŒãã®ãµããŒããæäŸãããŸããè³æºïŒãªãœãŒã¹ïŒ
ã¹ã¿ã€ã«ããªãœãŒã¹ãã£ã¯ã·ã§ããªããã¿ãŒã³ãªã©ã®ãªãœãŒã¹ã¯ãã¢ããªã±ãŒã·ã§ã³å
šäœã«åæ£ã§ããŸããããã¯ãç¹ã«è€åã¢ããªã±ãŒã·ã§ã³ã«åœãŠã¯ãŸããŸãããªãœãŒã¹ãé
眮ããå Žæã«ã€ããŠèãããšãã¯ãUIèŠçŽ ãšããããå¿
èŠãšãããªãœãŒã¹ã®éã®äŸåé¢ä¿ã«ç¹ã«æ³šæãæã£ãŠãã ãããäžã®å³ã«ç€ºãæ ªåŒãã¬ãŒããŒRIãããžã§ã¯ãã«ã¯ããªãœãŒã¹ãã©ãã«äœãããšãã§ãããã瀺ãã©ãã«ãå«ãŸããŠããŸãã
ã¢ããªã±ãŒã·ã§ã³ã¬ãã«ã®ãªãœãŒã¹
éåžžãã¢ããªã±ãŒã·ã§ã³ã¬ãã«ã®ãªãœãŒã¹ã¯ãã¢ããªã±ãŒã·ã§ã³å
šäœã§äœ¿çšãããŸãããããã®ãªãœãŒã¹ã¯éåžžãã¢ããªã±ãŒã·ã§ã³ã®ã«ãŒããã£ã¬ã¯ããªã«çŠç¹ãåœãŠãŠããŸãããã¢ãžã¥ãŒã«ãšã³ã³ãããŒã«ã®ã¿ã€ãã«åºã¥ããŠããã©ã«ãã®ã¹ã¿ã€ã«ãæäŸããããšãã§ããŸããäŸã¯TextBox
ãã¢ããªã±ãŒã·ã§ã³ã®ã«ãŒãã®ã¿ã€ãã«é©çšãããããã¹ããã£ãŒã«ãã®ã¹ã¿ã€ã«ã§ãããã®ã¹ã¿ã€ã«ã¯ãã¢ãžã¥ãŒã«ãŸãã¯ã³ã³ãããŒã«èªäœã§åå®çŸ©ãããŠããªãå Žåãã¢ããªã±ãŒã·ã§ã³ã®ãã¹ãŠã®ããã¹ããã£ãŒã«ãã«é©çšãããŸããã¢ãžã¥ãŒã«ã¬ãã«ã®ãªãœãŒã¹
ã¢ãžã¥ãŒã«ã¬ãã«ã®ãªãœãŒã¹ã®åœ¹å²ã¯ãã¢ãžã¥ãŒã«å
ã®ãã¹ãŠã®èŠçŽ ã«é©çšããããšããç¹ã§ãã¢ããªã±ãŒã·ã§ã³ã¬ãã«ã®ãªãœãŒã¹ã«äŒŒãŠããŸãããã®ã¬ãã«ã§ãªãœãŒã¹ã䜿çšãããšãåäžã®ã¢ãžã¥ãŒã«ã®äžè²«ãããã¥ãŒãæäŸã§ããã ãã§ãªããã¢ãžã¥ãŒã«å
ã®åã
ã®èŠçŽ ãåå©çšã§ããŸããã¢ãžã¥ãŒã«ã¬ãã«ã®ãªãœãŒã¹ã®äœ¿çšã¯ããã®ã¢ãžã¥ãŒã«å
ã§å¶éããå¿
èŠããããŸããã¢ãžã¥ãŒã«éã«äŸåé¢ä¿ãäœæãããšããŠãŒã¶ãŒèŠçŽ ã®è¡šç€ºã§æ€åºãå°é£ãªãšã©ãŒãçºçããå¯èœæ§ããããŸããå¶åŸ¡ã¬ãã«ã®ãªãœãŒã¹
ãã®ã¿ã€ãã®ãªãœãŒã¹ã¯éåžžããŠãŒã¶ãŒèŠçŽ ã®ã©ã€ãã©ãªã«å«ãŸããŠããããªãœãŒã¹ã¯å«ãŸãããã¹ãŠã®èŠçŽ ã«ãã£ãŠäœ¿çšãããŸãããŠãŒã¶ãŒèŠçŽ ã©ã€ãã©ãªã«ã¯ç¹å®ã®èŠçŽ ã®ã¿ãå«ãŸãããŠãŒã¶ãŒã³ã³ãããŒã«ã¯å«ãŸããªãããããããã®ãªãœãŒã¹ã®ã¹ã³ãŒãã¯éåžžæå°ã§ããïŒPrismã¢ããªã±ãŒã·ã§ã³ã§ã¯ããŠãŒã¶ãŒã³ã³ãããŒã«ã¯éåžžã䜿çšãããã¢ãžã¥ãŒã«ã«é
眮ãããŸããïŒ