첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.

728x90
반응형
728x170

TestProject.zip
다운로드

▶ MainWindow.xaml

<Window x:Class="TestProject.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid" 
    xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" 
    Width="800"
    Height="600"
    Title="수동으로 드래그 &amp; 드롭 사용하기"
    FontFamily="나눔고딕코딩"
    FontSize="16">
    <Grid>
        <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>
</Window>

 

728x90

 

▶ MainWindow.xaml.cs

using System.Windows;

using DevExpress.Xpf.Grid;
using DevExpress.Xpf.Grid.DragDrop;

namespace TestProject
{
    /// <summary>
    /// 메인 윈도우
    /// </summary>
    public partial class MainWindow : Window
    {
        //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
        ////////////////////////////////////////////////////////////////////////////////////////// Public

        #region 생성자 - MainWindow()

        /// <summary>
        /// 생성자
        /// </summary>
        public MainWindow()
        {
            InitializeComponent();

            this.treeListControl.ItemsSource = new EmployeeList().GetData();
        }

        #endregion

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method
        ////////////////////////////////////////////////////////////////////////////////////////// Private

        #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
    }
}
728x90
반응형
그리드형(광고전용)
Posted by icodebroker

댓글을 달아 주세요