Пример #1
0
        private void ColumnSourceItem_MouseDown(object sender, MouseButtonEventArgs e)
        {
            Mouse.Capture(root);
            sourceItem = sender as ColumnSourceItem;

            this.Cursor = Cursors.Hand;

            // 已选中项,无反应
            // 未选中项,记录选中项

            if (tempLine == null)
            {
                tempLine = new Line();
                tempLine.StrokeStartLineCap = PenLineCap.Round;
                tempLine.StrokeEndLineCap   = PenLineCap.Round;
                tempLine.StrokeDashCap      = PenLineCap.Round;
                //tempLine.StrokeDashArray = new DoubleCollection(new double[] { 3, 2 });
                tempLine.StrokeThickness = 3;
                tempLine.Stroke          = new SolidColorBrush(Colors.Silver);
                root.Children.Add(tempLine);

                tempLine.X1 = getStartLocation().Width;
                tempLine.Y1 = getStartLocation().Height;
                tempLine.X2 = e.GetPosition(root).X;
                tempLine.Y2 = e.GetPosition(root).Y;

                Debug.WriteLine(string.Format("x1:{0} , y1:{1}", tempLine.X1, tempLine.Y1));
            }
        }
Пример #2
0
        private void ColumnTargetItem_MouseUp(object sender, MouseButtonEventArgs e)
        {
            targetItem  = sender as ColumnTargetItem;
            tempLine.X2 = getEndLocation().Width;
            tempLine.Y2 = getEndLocation().Height;

            sourceItem = null;
            targetItem = null;
            tempLine   = null;
        }
Пример #3
0
        private void root_MouseUp(object sender, MouseButtonEventArgs e)
        {
            var p = e.GetPosition(root);

            // 已选中项,红框显示,无法形成链接
            VisualTreeHelper.HitTest(root, null, f =>
            {
                var element = f.VisualHit;

                if (element is Border)
                {
                    object tag = ((Border)element).Tag;
                    if (tag != null)
                    {
                        string columnName = tag.ToString();

                        var target = targetItemList.FirstOrDefault(item => item.ColumnName == columnName);

                        if (target != null && sourceItem != null)
                        {
                            targetItem = target;

                            if (!ColumnMap.ContainsKey(targetItem.ColumnName))
                            {
                                drawLine(sourceItem.ColumnName, targetItem.ColumnName);
                                ColumnMap.Add(targetItem.ColumnName, sourceItem.ColumnName);

                                targetItem.ColumnValue = sourceItem.ColumnName;

                                TableDAL.Comment(TableName, targetItem.ColumnName, sourceItem.ColumnName);
                            }
                        }
                    }
                }

                return(HitTestResultBehavior.Continue);
            }, new PointHitTestParameters(p));
            // 未选中项,记录选中项,画线
            root.ReleaseMouseCapture();

            root.Children.Remove(tempLine);
            tempLine   = null;
            sourceItem = null;
        }
Пример #4
0
        private void showSource()
        {
            for (int i = 0; i < Source.Columns.Count; i++)
            {
                ColumnSourceItem item = new ColumnSourceItem();
                item.ColumnName  = Source.Columns[i].ColumnName;
                item.ColumnValue = Source.Rows[0][i].ToString();
                item.Index       = i;

                item.MouseDown += ColumnSourceItem_MouseDown;

                Canvas.SetLeft(item, 0);
                Canvas.SetTop(item, 30 * i);

                root.Children.Add(item);

                sourceItemList.Add(item);
            }
        }