1. 기본젝트 구성생성 (NewsAggregtor.Shell.csproj)
(같이 웹사이트도 생성)
CAL 관련 참조파일 참조
Bootstrapper.cs 생성
using Microsoft.Practices.Composite.UnityExtensions; using Microsoft.Practices.Composite.Modularity; namespace NewsAggregtor.Shell { public class Bootstrapper :UnityBootstrapper { protected override DependencyObject CreateShell() { Shell shell = new Shell(); Application.Current.RootVisual = shell; return shell; } protected override IModuleCatalog GetModuleCatalog() { return base.GetModuleCatalog(); } } }
2.Shell.xaml 페이지 생성
App.xaml 페이지 수정
private void Application_Startup(object sender, StartupEventArgs e) { //this.RootVisual = new Page(); new Bootstrapper().Run(); }
2.모듈구성 프로젝트 생성 (NewAggregtor.Digg.csproj)
CAL 관련 참조파일 참조
DiggModule.cs 파일 생성
using Microsoft.Practices.Composite.Modularity; namespace NewsAggregtor.Digg { public class DiggModule : IModule { #region IModule 멤버 public void Initialize() { } #endregion } }
-------------------------------------------------------------------------------------------------------------------
모듈프로젝트 생성후 NewsAggregtor.Shell.csproj 프로젝트에서
모듈프로젝트 참조
NewsAggregtor.Shell.csproj 에서
모듈관련 프로젝트 참조후 GetModuleCatalog() 메소드 모듈 로드로 수정
using Microsoft.Practices.Composite.UnityExtensions; using Microsoft.Practices.Composite.Modularity; namespace NewsAggregtor.Shell { public class Bootstrapper :UnityBootstrapper { protected override DependencyObject CreateShell() { Shell shell = new Shell(); Application.Current.RootVisual = shell; return shell; } protected override IModuleCatalog GetModuleCatalog() { ModuleCatalog catalog = new ModuleCatalog(); catalog.AddModule( typeof( NewsAggregtor.Digg.DiggModule) ); return catalog; } } }
실행해서 오류 안나면 일단 성공~
두번째 Createing a Modular
DiggSearchResult.xaml 페이지 추가
<UserControl x:Class="NewsAggregtor.Digg.DiggSearchResult"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="400" Height="300">
<Grid x:Name="LayoutRoot" Background="White">
<TextBlock>DiggSearchResult</TextBlock>
</Grid>
</UserControl>
DiggSearchResultView.xaml 페이지 추가
<UserControl x:Class="NewsAggregtor.Digg.DiggSearchResultView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="400" Height="300">
<Grid x:Name="LayoutRoot" Background="White">
<TextBlock>DiggSearchResultView</TextBlock>
</Grid>
</UserControl>
NewAggregtor.Digg.csproj 의 DiggModule.cs 수정
using System; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Ink; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using Microsoft.Practices.Composite.Modularity; using Microsoft.Practices.Composite.Regions; namespace NewsAggregtor.Digg { public class DiggModule : IModule { #region IModule 멤버 public void Initialize() { //Shell.xaml의 ResultRegion 이름을 찾아서 DiggSearchResultView.xaml 이 등록된다 regionManager.RegisterViewWithRegion("ResultRegion", typeof(NewsAggregtor.Digg.DiggSearchResultView)); } #endregion private IRegionManager regionManager; public DiggModule(IRegionManager regionManager ) { this.regionManager = regionManager; } } }
NewsAggregtor.Shell.csproj 의 Shell.xaml 파일수정
네임스페이스 추가
xmlns:Regions="clr-namespace:Microsoft.Practices.Composite.Presentation.Regions;assembly=Microsoft.Practices.Composite.Presentation"
<UserControl xmlns:basics="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls" x:Class="NewsAggregtor.Shell.Shell" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:Regions="clr-namespace:Microsoft.Practices.Composite.Presentation.Regions;assembly=Microsoft.Practices.Composite.Presentation" Width="400" Height="300"> <Grid x:Name="LayoutRoot" Background="White"> <Grid.RowDefinitions> <RowDefinition Height="0.197*"/> <RowDefinition Height="0.803*"/> </Grid.RowDefinitions> <ContentControl Regions:RegionManager.RegionName="searchRegion" Background="{x:Null}"/> <basics:TabControl Regions:RegionManager.RegionName="searchResult"></basics:TabControl> </Grid> </UserControl>
모듈등록
일단 Shell.xaml 페이지에
xmlns:Regions="clr-namespace:Microsoft.Practices.Composite.Presentation.Regions;assembly=Microsoft.Practices.Composite.Presentation"
추가하고
<ContentControl Regions:RegionManager.RegionName="searchRegion" Background="{x:Null}"/>
<basics:TabControl Regions:RegionManager.RegionName="ResultRegion"></basics:TabControl>
임의의 이름을 준다 나중에 모듈 올릴때 저 이름으로 찾아간다
잘 나타면 끗~
'WPF' 카테고리의 다른 글
INotifyPropertyChanged (0) | 2009.05.28 |
---|---|
Silverlight 2를 사용하여 데이터 중심 웹 응용 프로그램 만들기 (0) | 2009.05.28 |
ObservableCollection<(Of <(T>)>) Class (0) | 2009.05.28 |
데이터 삽입,수정,삭제 방법(ADO.NET 데이터 서비스/Silverlight) (0) | 2009.05.28 |
Presentation Model. (0) | 2009.05.27 |
[CAL] Presentation Model (0) | 2009.05.06 |
CAL Development Activities (0) | 2009.04.29 |
[CAL] Composite Application Library 으로 구현하기 (0) | 2009.04.24 |
Silverlight Toolkit 와 Deep Zoom Composer 다운로드 (0) | 2009.04.24 |
Prism: patterns & practices Composite Application Guidance for WPF and Silverlight site (0) | 2009.04.22 |