다음을 통해 공유


디자이너 재호스팅

이 항목은 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> 

다음으로 이 샘플에서는 디자이너를 만들고 해당 기본 ViewPropertyInspectorView를 사용자 인터페이스의 적절한 컨테이너와 연결합니다. 아래에 추가로 나와 있는 몇몇 코드 줄에 대해서는 약간의 설명이 필요합니다. 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>

샘플 사용

  1. Visual Studio 2010에서 DesignerRehosting.sln 솔루션을 엽니다.

  2. F5 키를 눌러 응용 프로그램을 컴파일하고 실행합니다.

  3. 재호스팅된 디자이너와 함께 WPF 응용 프로그램이 시작됩니다.

Dd699776.Important(ko-kr,VS.100).gif 참고:
컴퓨터에 이 샘플이 이미 설치되어 있을 수도 있습니다. 계속하기 전에 다음(기본) 디렉터리를 확인하십시오.

<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