前伴唱
<UserControl x:Class="ComputerDropDragControl.RackUnit"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">
<Grid Margin="5,0,0,0">
<Rectangle x:Name="recOne" Margin="7,7,0,0" VerticalAlignment="Bottom" >
<Rectangle.Stroke>
<SolidColorBrush Color="Black" Opacity="0.1"/>
</Rectangle.Stroke>
<Rectangle.Fill>
<SolidColorBrush Color="Black" Opacity="0.4"/>
</Rectangle.Fill>
</Rectangle>
<Border x:Name="borderOne" BorderBrush="Black" BorderThickness="1" Width="130" HorizontalAlignment="Left"
VerticalAlignment="Bottom" >
<Grid x:Name="LayoutRoot" Background="White" >
</Grid>
</Border>
</Grid>
</UserControl>
后半厂
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Collections.ObjectModel;
using System.Windows.Media.Imaging;
namespace ComputerDropDragControl
{
/// <summary>
/// “机架”单元
/// 创建人:吴兆娟
/// 创建时间:2011-10-26
/// </summary>
public partial class RackUnit : UserControl
{
#region <<页面加载>>
/// <summary>
/// 页面加载事件
/// </summary>
public RackUnit(RowFrameView entity)
{
InitializeComponent();
FrameMsg = entity;
//加载控件
LoadControl();
}
#endregion
#region <<控件事件>>
#region <<拖拽相关事件>>
/// <summary>
/// “开始拖拽”
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void dropDragPanel_ItemDragStarting(object sender, ItemDragEventArgs e)
{
StaticClass.FromList = false;
StaticClass.DragPanel = (PanelDragDropTarget)sender;
Dictionary<string, object> dic = GetDropDragPanelContentValues(StaticClass.DragPanel);
StackPanel stackContent = (StackPanel)(StaticClass.DragPanel.Content);
CU = (ComputerUnit)(stackContent.Children[3]);
CU.ShowTip = false;
NodeFrameView entity = new NodeFrameView(CU.ReturnNodeFrameView.NodeID, CU.ReturnNodeFrameView.NodeName, CU.ReturnNodeFrameView.NodeSize);
StaticClass.CUStatic = new ComputerUnit(entity);
}
/// <summary>
/// “目标”即是“放”的对象Drop事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void dropDragPanel_Drop(object sender, Microsoft.Windows.DragEventArgs e)
{
StaticClass.DropInHandCar = false;
//“放”
StaticClass.DropPanel = (PanelDragDropTarget)sender;
DropPanel = (PanelDragDropTarget)sender;
Dictionary<string, object> dicDrop = GetDropDragPanelContentValues((PanelDragDropTarget)sender);
//“放”对象的父对象
Grid fatherDropGrid = ((Grid)((PanelDragDropTarget)sender).Parent);
int tempDropCount = (fatherDropGrid.Children.Count() + 1) / 2;
PanelDragDropTarget dropPanelEnd = (PanelDragDropTarget)fatherDropGrid.Children[(tempDropCount - (int)dicDrop["RackUNo"]) * 2];
StackPanel stackDropEnd = (StackPanel)dropPanelEnd.Content;
TextBlock tbDropFrame = (TextBlock)stackDropEnd.Children[0];
if (!StaticClass.FromList)
{
bool normalCondition = true;
//“拖”
StackPanel stackContent = (StackPanel)(StaticClass.DragPanel.Content);
CU = (ComputerUnit)(stackContent.Children[3]);
Dictionary<string, object> dicDrag = GetDropDragPanelContentValues(StaticClass.DragPanel);
//“拖”
Grid fatherDragGrid = (Grid)(StaticClass.DragPanel.Parent);
int tempDragCount = (fatherDragGrid.Children.Count() + 1) / 2;
StackPanel stackDragEnd = (StackPanel)StaticClass.DragPanel.Content;
TextBlock tbDragFrame = (TextBlock)stackDragEnd.Children[0];
TextBlock tbDragUNo = (TextBlock)stackDragEnd.Children[1];
TextBlock tbExist = (TextBlock)stackDragEnd.Children[2];
if (tbDropFrame.Text == tbDragFrame.Text)//同一个机器架内拖拽的业务逻辑
{
List<PanelDragDropTarget> listNeighborUp = new List<PanelDragDropTarget>();
for (int i = 1; i < CU.ReturnNodeFrameView.NodeSize; i++)
{
if ((tempDropCount - (int)dicDrag["RackUNo"] - i) * 2 > 0)
{
PanelDragDropTarget panelTemp = (PanelDragDropTarget)fatherDragGrid.Children[(tempDropCount - (int)dicDrag["RackUNo"] - i) * 2];
StackPanel stackTemp = (StackPanel)panelTemp.Content;
TextBlock tbExistTemp = (TextBlock)stackTemp.Children[2];
TextBlock tbRackUNo = (TextBlock)stackTemp.Children[1];
if (tbExistTemp.Text == "false")
{
listNeighborUp.Add(panelTemp);
}
else
{
break;
}
}
}
foreach (PanelDragDropTarget panel in listNeighborUp)
{
if (panel == DropPanel)
{
normalCondition = false;
//MessageBox.Show("特殊的拆分模式!");
DepartUnit(StaticClass.DragPanel);
MergeUnit(StaticClass.DragPanel, dicDrop);
StaticClass.ExistPlace = true;
UpdateData();
return;
}
}
}
if (normalCondition)
{
//是否存在存储空间以及操作
WhetherExistPlace();
}
}
else
{
ListBox list = (ListBox)StaticClass.DragPanelList.Content;
ListBoxItem selectItem = (ListBoxItem)list.SelectedItem;
SelectItem = selectItem;
SelectIndex = list.SelectedIndex;
NodeFrameView entity = (NodeFrameView)selectItem.DataContext;
ComputerUnit cu = new ComputerUnit(entity);
cu.ShowTip = true;
CU = cu;
//是否存在存储空间以及操作
WhetherExistPlace();
}
}
/// <summary>
/// “拖对象放至目标对象后”发生的事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void dropDragPanel_ItemDroppedOnTarget(object sender, ItemDragEventArgs e)
{
if (StaticClass.DropInHandCar)//置入“手推车”
{
DepartUnit(StaticClass.DragPanel);
ListBoxDragDropTarget listDropPanel = (ListBoxDragDropTarget)StaticClass.DrogPanelList;
ListBox lb = (ListBox)listDropPanel.Content;
int count = lb.Items.Count;
lb.Items.RemoveAt(count - 1);
}
else if (StaticClass.DropInRecyle)//置入“回收站”
{
DepartUnit(StaticClass.DragPanel);
ListBoxDragDropTarget listDropPanel = (ListBoxDragDropTarget)StaticClass.DrogPanelList;
ListBox lb = (ListBox)listDropPanel.Content;
int count = lb.Items.Count;
lb.Items.RemoveAt(count - 1);
}
else//“普通”情况
{
if (StaticClass.DropPanel != null)
{
if (StaticClass.DropPanel.AllowDrop)
{
if (!StaticClass.ExistPlace)
{
CancelBehavior();
}
}
}
CU.ShowTip = true;
}
}
#endregion
/// <summary>
/// “模态窗口关闭”时发生
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void cr_Closed(object sender, EventArgs e)
{
CWInRack cr = (CWInRack)sender;
if (StaticClass.DropPanel != null)
{
if (!StaticClass.DropPanel.AllowDrop)
{
((StackPanel)StaticClass.DropPanel.Content).Children.Remove(SelectItem);
if (cr.DialogResult == false)
{
//拆分单元格
DepartUnit(StaticClass.DropPanel);
((StackPanel)StaticClass.DropPanel.Content).Children.RemoveAt(3);
StaticClass.DropPanel.AllowDrop = true;
ListBox list = (ListBox)StaticClass.DragPanelList.Content;
list.Items.Insert(SelectIndex, SelectItem);
}
if (cr.DialogResult == true)
{
//if (StaticClass.FromHandCar)
//{
// foreach (ListBoxItem item in StaticClass.HandCarList)//“手推车”
// {
// if (item.Name == SelectItem.Name)
// {
// StaticClass.HandCarList.Remove(item);
// return;
// }
// }
//}
//数据库交互
}
StaticClass.FromHandCar = false;
}
}
}
#endregion
#region <<辅助方法>>
/// <summary>
/// 打开模态窗口
/// </summary>
private void OpenChildWindow()
{
CWInRack cr = new CWInRack();
cr.OverlayOpacity = 0.1;
cr.Height = 300;
cr.Width = 500;
//cr.Content = tempFrame;
cr.Show();
cr.Closed += new EventHandler(cr_Closed);
}
/// <summary>
/// 更新数据库
/// </summary>
private void UpdateData()
{
#region <<数据库交互>>
StackPanel stackDrop = (StackPanel)DropPanel.Content;
CU.ReturnNodeFrameView.FrameID = ((TextBlock)stackDrop.Children[0]).Text;
CU.ReturnNodeFrameView.NodeEndUNo = int.Parse(((TextBlock)stackDrop.Children[1]).Text);
CU.ReturnNodeFrameView.NodeBeginUNo = int.Parse(((TextBlock)stackDrop.Children[1]).Text) - CU.ReturnNodeFrameView.NodeSize + 1;
//建立“设备”和“机架”新关系
MessageBox.Show(CU.ReturnNodeFrameView.FrameID + "------" + CU.ReturnNodeFrameView.NodeBeginUNo.ToString() + "-------" + CU.ReturnNodeFrameView.NodeEndUNo.ToString());
#endregion
}
/// <summary>
/// 判断是否存在存储空间以及相关操作
/// </summary>
private void WhetherExistPlace()
{
//“放”
Dictionary<string, object> dicDrop = GetDropDragPanelContentValues(DropPanel);
Grid fatherDropGrid = (Grid)(DropPanel.Parent);
int tempDropCount = (fatherDropGrid.Children.Count() + 1) / 2;
PanelDragDropTarget dropPanelEnd = (PanelDragDropTarget)fatherDropGrid.Children[(tempDropCount - (int)dicDrop["RackUNo"]) * 2];
StackPanel stackDropEnd = (StackPanel)dropPanelEnd.Content;
TextBlock tbDropFrame = (TextBlock)stackDropEnd.Children[0];
#region <<判断是否有足够空间>>
if (CU.ReturnNodeFrameView.NodeSize == 1)
{
if (((TextBlock)stackDropEnd.Children[2]).Text == "true")
{
MessageBox.Show("没有足够的空间!");
StaticClass.ExistPlace = false;
return;
}
else
{
StaticClass.ExistPlace = true;
MergeUnit(DropPanel, dicDrop);
if (!StaticClass.FromList)
{
DepartUnit(StaticClass.DragPanel);
}
else
{
stackDropEnd.Children.Add(CU);
//打开模态窗口填写信息
OpenChildWindow();
}
//数据库操作
UpdateData();
StaticClass.FromList = false;
}
}
else
{
for (int i = 1; i < CU.ReturnNodeFrameView.NodeSize; i++)
{
if ((tempDropCount - (int)dicDrop["RackUNo"] + i) * 2 <= tempDropCount * 2 - 1)
{
PanelDragDropTarget dropPanelTempOne = (PanelDragDropTarget)fatherDropGrid.Children[(tempDropCount - (int)dicDrop["RackUNo"] + i) * 2];
StackPanel stackDropPanelOne = (StackPanel)dropPanelTempOne.Content;
TextBlock tbExistComputer = (TextBlock)stackDropPanelOne.Children[2];
if (tbExistComputer.Text == "true")
{
MessageBox.Show("没有足够的空间!");
StaticClass.ExistPlace = false;
return;
}
}
if (i == CU.ReturnNodeFrameView.NodeSize - 1)
{
if ((tempDropCount - (int)dicDrop["RackUNo"] + i) * 2 > tempDropCount * 2 - 1)
{
MessageBox.Show("没有足够的空间!");
StaticClass.ExistPlace = false;
return;
}
else
{
StaticClass.ExistPlace = true;
//合并单元格
MergeUnit(DropPanel, dicDrop);
if (!StaticClass.FromList)
{
//拆分单元格
DepartUnit(StaticClass.DragPanel);
}
else
{
stackDropEnd.Children.Add(CU);
//打开模态窗口填写信息
OpenChildWindow();
}
//数据库操作
UpdateData();
StaticClass.FromList = false;
}
}
}
}
#endregion
}
/// <summary>
/// “合并单元格”
/// </summary>
/// <param name="panel"></param>
private void MergeUnit(PanelDragDropTarget panel, Dictionary<string, object> dicDrop)
{
Grid fatherDropGrid = (Grid)(panel.Parent);
int tempDropCount = (fatherDropGrid.Children.Count() + 1) / 2;
PanelDragDropTarget dropPanelEnd = (PanelDragDropTarget)fatherDropGrid.Children[(tempDropCount - (int)dicDrop["RackUNo"]) * 2];
dropPanelEnd.AllowDrop = false;
dropPanelEnd.SetValue(Grid.RowSpanProperty, CU.ReturnNodeFrameView.NodeSize);
StackPanel stackDropEnd = (StackPanel)dropPanelEnd.Content;
stackDropEnd.Height = 40 * CU.ReturnNodeFrameView.NodeSize;
TextBlock tbDropFrame = (TextBlock)stackDropEnd.Children[0];
for (int j = 1; j < CU.ReturnNodeFrameView.NodeSize; j++)
{
PanelDragDropTarget dropPanelTemp = (PanelDragDropTarget)fatherDropGrid.Children[(tempDropCount - (int)dicDrop["RackUNo"] + j) * 2];
dropPanelTemp.Visibility = Visibility.Collapsed;
dropPanelTemp.AllowDrop = false;
StackPanel stackTemp = (StackPanel)dropPanelTemp.Content;
((TextBlock)stackTemp.Children[2]).Text = "true";
}
#region <<修改偷藏值>>
((TextBlock)stackDropEnd.Children[2]).Text = "true";
#endregion
}
/// <summary>
/// “拆分单元格”
/// </summary>
/// <param name="panel"></param>
private void DepartUnit(PanelDragDropTarget panel)
{
//“拖”的父对象
Grid fatherDragGrid = (Grid)(panel.Parent);
int tempCount = (fatherDragGrid.Children.Count() + 1) / 2;
PanelDragDropTarget dragPanelEnd = (PanelDragDropTarget)fatherDragGrid.Children[(tempCount - CU.ReturnNodeFrameView.NodeEndUNo) * 2];
dragPanelEnd.AllowDrop = true;
dragPanelEnd.SetValue(Grid.RowSpanProperty, 1);
StackPanel stackDragEnd = (StackPanel)dragPanelEnd.Content;
stackDragEnd.Height = 40;//单位长度
for (int i = 1; i < CU.ReturnNodeFrameView.NodeSize; i++)
{
PanelDragDropTarget dropDragPanelTemp =
(PanelDragDropTarget)fatherDragGrid.Children[(tempCount - CU.ReturnNodeFrameView.NodeEndUNo + i) * 2];
dropDragPanelTemp.Visibility = Visibility.Visible;
dropDragPanelTemp.AllowDrop = true;
StackPanel stackTemp = (StackPanel)dropDragPanelTemp.Content;
((TextBlock)stackTemp.Children[2]).Text = "false";
}
#region <<修改偷藏值>>
((TextBlock)stackDragEnd.Children[2]).Text = "false";
#endregion
}
/// <summary>
/// “取消拖拽操作”
/// </summary>
private void CancelBehavior()
{
((StackPanel)StaticClass.DropPanel.Content).Children.RemoveAt(3);
((StackPanel)StaticClass.DragPanel.Content).Children.Add(CU);
StaticClass.DropPanel.AllowDrop = true;
StaticClass.DragPanel.AllowDrop = false;
}
/// <summary>
/// 获取DropDragPanel中值信息
/// </summary>
/// <param name="panel"></param>
/// <returns></returns>
private Dictionary<string, object> GetDropDragPanelContentValues(PanelDragDropTarget panel)
{
Dictionary<string, object> dic = new Dictionary<string, object>();
StackPanel aimStack = (StackPanel)panel.Content;
#region<<偷藏的一些设备以及机架信息赋值>>
string computerFrame = ((TextBlock)aimStack.Children[0]).Text;
int rackUNo = int.Parse(((TextBlock)aimStack.Children[1]).Text);
string existComputer = ((TextBlock)aimStack.Children[2]).Text;
#endregion
dic.Add("FrameID", computerFrame);
dic.Add("RackUNo", rackUNo);
dic.Add("ExistComputer", existComputer);
return dic;
}
#region <<加载界面相关>>
/// <summary>
/// 加载控件
/// </summary>
private void LoadControl()
{
ColumnDefinition c1 = new ColumnDefinition();
c1.Width = new GridLength(40);
ColumnDefinition c2 = new ColumnDefinition();
c2.Width = new GridLength(1);
ColumnDefinition c3 = new ColumnDefinition();
c3.Width = new GridLength(90);
LayoutRoot.ColumnDefinitions.Add(c1);
LayoutRoot.ColumnDefinitions.Add(c2);
LayoutRoot.ColumnDefinitions.Add(c3);
LayoutRoot.Width = 131;
LayoutRoot.HorizontalAlignment = HorizontalAlignment.Left;
LayoutRoot.ShowGridLines = false;
LayoutRoot.Height = 23 * (FrameMsg.TotalUCount + 1) + 5;
borderOne.Height = 23 * (FrameMsg.TotalUCount + 1) + 5;
recOne.Height = 23 * (FrameMsg.TotalUCount + 1) - 5;
recOne.Width = 131;
for (int i = FrameMsg.TotalUCount + 2; i >= 1; i--)
{
RowDefinition rd = new RowDefinition();
rd.Height = new GridLength(23);
LayoutRoot.RowDefinitions.Add(rd);
if (i == FrameMsg.TotalUCount + 2)
{
//StackPanel stackHeader = new StackPanel();
//stackHeader.Background = new SolidColorBrush(Color.FromArgb(255, 56, 55, 55));
#region
//LinearGradientBrush header = new LinearGradientBrush();
//header.StartPoint = new Point(0, 0);
//header.EndPoint = new Point(0, 1);
//GradientStopCollection headStopCol = new GradientStopCollection();
//GradientStop gsOne = new GradientStop();
//gsOne.Color = Color.FromArgb(255, 134, 134, 134);
//gsOne.Offset = 0;
//GradientStop gsTwo = new GradientStop();
//gsTwo.Color = Color.FromArgb(255, 134, 134, 134);
//gsTwo.Offset = 0.5;
//GradientStop gsThree = new GradientStop();
//gsThree.Color = Color.FromArgb(255, 89, 89, 89);
//gsThree.Offset = 0.5;
//GradientStop gsFour = new GradientStop();
//gsFour.Color = Color.FromArgb(255, 89, 89, 89);
//gsFour.Offset = 1;
//headStopCol.Add(gsOne);
//headStopCol.Add(gsTwo);
//headStopCol.Add(gsThree);
//headStopCol.Add(gsFour);
//header.GradientStops = headStopCol;
//stackHeader.Background = header;
#endregion
//stackHeader.SetValue(Grid.RowProperty, 0);
//stackHeader.SetValue(Grid.ColumnSpanProperty, 3);
//stackHeader.Height = 33;
//TextBlock tbHeader = new TextBlock();
//tbHeader.Text = FrameMsg.FrameName;
//tbHeader.Foreground = new SolidColorBrush(Colors.White);
//tbHeader.TextAlignment = TextAlignment.Center;
//tbHeader.VerticalAlignment = VerticalAlignment.Center;
//tbHeader.SetValue(Grid.RowProperty, 0);
//tbHeader.SetValue(Grid.ColumnSpanProperty, 3);
//LayoutRoot.Children.Add(tbHeader);
//tbHeader.Margin = new Thickness(0, 5, 0, 0);
//stackHeader.Children.Add(tbHeader);
rd.Height = new GridLength(28);
Button btnHead = new Button();
btnHead.Content = FrameMsg.FrameName;
btnHead.SetValue(Grid.RowProperty, 0);
btnHead.SetValue(Grid.ColumnSpanProperty, 3);
LayoutRoot.Children.Add(btnHead);
}
else if (i == FrameMsg.TotalUCount + 1)
{
rd.Height = new GridLength(1);
Border borderSeperateH = new Border();
borderSeperateH.SetValue(Grid.RowProperty, 1);
borderSeperateH.SetValue(Grid.ColumnSpanProperty, 3);
borderSeperateH.Background = new SolidColorBrush(Colors.Black);
LayoutRoot.Children.Add(borderSeperateH);
Border borderSeperateV = new Border();
borderSeperateV.SetValue(Grid.RowProperty, 2);
borderSeperateV.SetValue(Grid.ColumnProperty, 1);
borderSeperateV.Background = new SolidColorBrush(Colors.Black);
borderSeperateV.SetValue(Grid.RowSpanProperty, FrameMsg.TotalUCount);
LayoutRoot.Children.Add(borderSeperateV);
}
else
{
StackPanel stackUNo = new StackPanel();
stackUNo.SetValue(Grid.RowProperty, FrameMsg.TotalUCount - i + 2);
stackUNo.SetValue(Grid.ColumnProperty, 0);
TextBlock tbRackNum = new TextBlock();
tbRackNum.Text = i.ToString();
tbRackNum.Foreground = new SolidColorBrush(Colors.Black);
tbRackNum.TextAlignment = TextAlignment.Center;
//tbRackNum.VerticalAlignment = VerticalAlignment.Center;
//tbRackNum.SetValue(Grid.RowProperty, FrameMsg.TotalUCount - i + 2);
//tbRackNum.SetValue(Grid.ColumnProperty, 0);
//LayoutRoot.Children.Add(tbRackNum);
tbRackNum.Margin = new Thickness(0, 5, 0, 0);
stackUNo.Children.Add(tbRackNum);
LayoutRoot.Children.Add(stackUNo);
PanelDragDropTarget dropDrapPanel = new PanelDragDropTarget();
dropDrapPanel.AllowDrop = true;
dropDrapPanel.SetValue(Grid.RowProperty, FrameMsg.TotalUCount - i + 2);
dropDrapPanel.SetValue(Grid.ColumnProperty, 2);
StackPanel stackOne = new StackPanel();
stackOne.Height = 23;
stackOne.Width = 90;
if ((i - 1) % 2 == 0)
{
//stackUNo.Background = new SolidColorBrush(Color.FromArgb(255, 204, 222, 237));
stackOne.Background = new SolidColorBrush(Colors.LightGray);
}
else
{
//stackUNo.Background = new SolidColorBrush(Colors.White);
stackOne.Background = new SolidColorBrush(Colors.White);
}
#region<<偷藏的一些设备以及机架信息>>
TextBlock hidFrameID = new TextBlock();//设备所在机架FrameID
hidFrameID.Visibility = Visibility.Collapsed;
hidFrameID.Text = FrameMsg.FrameName;
TextBlock hidUNo = new TextBlock();//机架U单位编号
hidUNo.Visibility = Visibility.Collapsed;
hidUNo.Text = tbRackNum.Text;
TextBlock hidExistComputer = new TextBlock();//机架U中是否存在设备
hidExistComputer.Visibility = Visibility.Collapsed;
hidExistComputer.Text = "false";
stackOne.Children.Add(hidFrameID);
stackOne.Children.Add(hidUNo);
stackOne.Children.Add(hidExistComputer);
#endregion
dropDrapPanel.Content = stackOne;
#region <<订阅拖拽事件>>
dropDrapPanel.ItemDroppedOnTarget += new EventHandler<ItemDragEventArgs>(dropDragPanel_ItemDroppedOnTarget);
dropDrapPanel.Drop += new Microsoft.Windows.DragEventHandler(dropDragPanel_Drop);
dropDrapPanel.ItemDragStarting += new EventHandler<ItemDragEventArgs>(dropDragPanel_ItemDragStarting);
#endregion
LayoutRoot.Children.Add(dropDrapPanel);
}
}
ReturnUI = LayoutRoot;
}
#endregion
#endregion
private ComputerUnit CU;
private PanelDragDropTarget DropPanel;
public UIElement ReturnUI { get; set; }
public NodeFrameView ReturnComputerMsg { get; set; }
private RowFrameView FrameMsg;
private ListBoxItem SelectItem;
private int SelectIndex;
}
}