첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
유용한 소스 코드가 있으면 icodebroker@naver.com으로 보내주시면 감사합니다.
블로그 자료는 자유롭게 사용하세요.

■ TreeListDragDropManager 클래스 : Drop 이벤트를 사용해 드래그 & 드롭 처리하기

----------------------------------------------------------------------------------------------------

XAML

 

 

<Grid

    xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"

    xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity">

    <dxg:TreeListControl x:Name="treeListControl"

        SelectionMode="Row">

        <dxg:TreeListControl.Columns>

            <dxg:TreeListColumn FieldName="Name"       ReadOnly="True" />

            <dxg:TreeListColumn FieldName="Department" ReadOnly="True" />

            <dxg:TreeListColumn FieldName="Position"   ReadOnly="True" />

        </dxg:TreeListControl.Columns>

        <dxg:TreeListControl.View>

            <dxg:TreeListView x:Name="treeListView"

                KeyFieldName="ID"

                ParentFieldName="ParentID"

                EditorShowMode="MouseUpFocused"

                AutoExpandAllNodes="True" />

        </dxg:TreeListControl.View>

        <i:Interaction.Behaviors>

            <dxg:TreeListDragDropManager

                AllowDrag="True"

                AllowDrop="True"

                ScrollSpacing="50"

                ScrollSpeed="1"

                Drop="treeListDragDropManager_Drop" />

        </i:Interaction.Behaviors>

    </dxg:TreeListControl>

</Grid>

 

 

C#

 

 

using DevExpress.Xpf.Grid;

using DevExpress.Xpf.Grid.DragDrop;

 

#region 트리 리스트 드래그/드롭 관리자 드롭시 처리하기 - treeListDragDropManager_Drop(sender, e)

 

/// <summary>

/// 트리 리스트 드래그/드롭 관리자 드롭시 처리하기

/// </summary>

/// <param name="sender">이벤트 발생자</param>

/// <param name="e">이벤트 인자</param>

private void treeListDragDropManager_Drop(object sender, TreeListDropEventArgs e)

{

    if(e.TargetNode != null)

    {

        foreach(TreeListNode treeListNode in e.DraggedRows)

        {

            (treeListNode.Content as Employee).Position   = (e.TargetNode.Content as Employee).Position;

            (treeListNode.Content as Employee).Department = (e.TargetNode.Content as Employee).Department;

        }

    }

 

    if(e.DropTargetType == DropTargetType.InsertRowsIntoNode)

    {

        foreach(TreeListNode treeListNode in e.DraggedRows)

        {

            (treeListNode.Content as Employee).Position = "";

        }

    }

}

 

#endregion

 

----------------------------------------------------------------------------------------------------

※ DevExpress에서 제공하는 System.Windows.Interactivity.dll을 참조한다.

Posted by 사용자 icodebroker
TAG

댓글을 달아 주세요