디자이너 재호스팅
이 항목은 Windows Workflow Foundation 4에 적용됩니다.
디자이너 재호스팅은 사용자 지정 응용 프로그램 내에 워크플로 디자인 캔버스를 호스팅하는 방식을 가리키는 일반적인 시나리오입니다. 대부분의 사람들이 가장 잘 알고 있는 호스팅 응용 프로그램은 Visual Studio이지만, 응용 프로그램에 워크플로 디자이너를 표시하는 것이 유용할 수 있는 시나리오는 그 밖에도 여러 가지가 있습니다.
최종 사용자가 현재 활성 상태 등 프로세스에 대한 런타임 데이터와 프로세스를 시각화하고 실행 시간 데이터 또는 워크플로 인스턴스에 대한 기타 정보를 집계하는 데 사용할 수 있는 모니터링 응용 프로그램
한정된 활동 집합으로 프로세스를 사용자 지정하는 데 사용할 수 있는 응용 프로그램
이러한 유형의 응용 프로그램을 지원하기 위해 .NET Framework 내에 워크플로 디자이너가 함께 제공되며, 이 워크플로 디자이너를 WPF 응용 프로그램 내에 호스팅하거나 적절한 WPF 호스팅 코드를 사용하여 WinForms 응용 프로그램에 호스팅할 수 있습니다. 이 샘플에서는 다음 작업을 수행하는 방법을 보여 줍니다.
WF 디자이너 재호스팅
재호스팅된 도구 상자 및 속성 표 사용
디자이너 재호스팅
이 샘플에서는 다음과 같은 표 레이아웃에 표시되는 디자이너를 포함할 WPF 레이아웃을 만드는 방법을 보여 줍니다. (공간의 제약 때문에 도구 상자 코드는 생략했습니다.) 여기에서는 디자이너와 속성 표가 포함되는 테두리의 이름에 주목할 필요가 있습니다.
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="7*"/>
<ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions>
<Border Grid.Column="0">
<sad:ToolboxControl> ... </sad:ToolboxControl>
</Border>
<Border Grid.Column="1" Name="DesignerBorder"/>
<Border Grid.Column="2" Name="PropertyBorder"/>
</Grid>
다음으로 이 샘플에서는 디자이너를 만들고 해당 기본 View 및 PropertyInspectorView를 사용자 인터페이스의 적절한 컨테이너와 연결합니다. 아래에 추가로 나와 있는 몇몇 코드 줄에 대해서는 약간의 설명이 필요합니다. Register 호출은 .NET Framework에 제공되는 활동에 대한 기본 활동 디자이너를 연결하는 데 필요합니다. Load는 편집할 WF 항목을 전달하기 위해 호출됩니다. 마지막으로, View(기본 캔버스) 및 PropertyInspectorView(속성 표)가 사용자 인터페이스 화면에 배치됩니다.
protected override void OnInitialized(EventArgs e)
{
base.OnInitialized(e);
// register metadata
(new DesignerMetadata()).Register();
// create the workflow designer
WorkflowDesigner wd = new WorkflowDesigner();
wd.Load(new Sequence());
DesignerBorder.Child = wd.View;
PropertyBorder.Child = wd.PropertyInspectorView;
}
재호스팅된 도구 상자 사용
이 샘플에서는 재호스팅된 도구 상자 컨트롤을 XAML에 선언적으로 사용합니다. 코드에서 ToolBoxItemWrapper 생성자에 형식을 전달할 수 있습니다.
<Window.Resources>
<sys:String x:Key="AssemblyName">System.Activities.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35</sys:String>
</Window.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="7*"/>
<ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions>
<Border Grid.Column="0">
<sad:ToolboxControl>
<sad:ToolboxControl.Categories>
<sad:ToolboxItemCategory CategoryName="Basic">
<sad:ToolboxItemWrapper AssemblyName="{StaticResource AssemblyName}" >
<sad:ToolboxItemWrapper.ToolName>
System.Activities.Core.Sequence
</sad:ToolboxItemWrapper.ToolName>
</sad:ToolboxItemWrapper>
<sad:ToolboxItemWrapper AssemblyName="{StaticResource AssemblyName}">
<sad:ToolboxItemWrapper.ToolName>
System.Activities.Core.WriteLine
</sad:ToolboxItemWrapper.ToolName>
</sad:ToolboxItemWrapper>
<sad:ToolboxItemWrapper AssemblyName="{StaticResource AssemblyName}">
<sad:ToolboxItemWrapper.ToolName>
System.Activities.Core.If
</sad:ToolboxItemWrapper.ToolName>
</sad:ToolboxItemWrapper>
<sad:ToolboxItemWrapper AssemblyName="{StaticResource AssemblyName}">
<sad:ToolboxItemWrapper.ToolName>
System.Activities.Core.While
</sad:ToolboxItemWrapper.ToolName>
</sad:ToolboxItemWrapper>
</sad:ToolboxItemCategory>
</sad:ToolboxControl.Categories>
</sad:ToolboxControl>
샘플 사용
Visual Studio 2010에서 DesignerRehosting.sln 솔루션을 엽니다.
F5 키를 눌러 응용 프로그램을 컴파일하고 실행합니다.
재호스팅된 디자이너와 함께 WPF 응용 프로그램이 시작됩니다.
![]() |
---|
컴퓨터에 이 샘플이 이미 설치되어 있을 수도 있습니다. 계속하기 전에 다음(기본) 디렉터리를 확인하십시오.
<InstallDrive>:\WF_WCF_Samples
이 디렉터리가 없으면 Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4로 이동하여 WCF(Windows Communication Foundation) 및 WF 샘플을 모두 다운로드하십시오. 이 샘플은 다음 디렉터리에 있습니다.
<InstallDrive>:\WF_WCF_Samples\WF\Basic\DesignerRehosting\Basic
|