ç®æ¬¡
- ã¯ããã«
- 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ã¢ããªã±ãŒã·ã§ã³ã§ã¯ããŠãŒã¶ãŒã³ã³ãããŒã«ã¯éåžžã䜿çšãããã¢ãžã¥ãŒã«ã«é 眮ãããŸããïŒ