Может ли VS2010 Workflow Designer автоматически организовать макет? - PullRequest
4 голосов
/ 03 февраля 2012

В VS2010 WF4 конструктор рабочих процессов есть ли способ заставить его автоматически организовать макет?Я хочу добавить новый шаг в верхней части рабочего процесса и не вижу способа легко освободить место для нового элемента.Поток процесса, под которым я хочу добавить новый шаг, представляет собой оператор switch с несколькими ветвями;кажется, что даже невозможно выбрать несколько предметов и переместить их все вниз, чтобы освободить место.

Ответы [ 3 ]

3 голосов
/ 03 февраля 2012

К сожалению, нет другого способа, кроме как добавить то, что вы хотите добавить, и затем удалить файл .layout, заставив его создать новый макет.Обязательно создайте резервную копию файла на случай, если новое расположение хуже старого.

2 голосов
/ 24 апреля 2014

Разверните свое дерево DataSet.xsd и удалите XSS-файл ...

DataSet.xsd
--DataSet.cs
--DataSet.xsc
--DataSet.xss <-- Delete this one...
--DataSet.cs
--DataSet.Designer.cs
0 голосов
/ 13 февраля 2015

Если вы любите приключения, вы можете запустить такой код (сначала сделайте резервную копию вашего XSS-файла, этот код перезапишет его!).Код автоматически упорядочивает фигуры в конструкторе.Вы можете настроить константы для лучшего эффекта.Их значение должно быть очевидным.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Xml.Linq;
using System.Text;

namespace AutoArrangeXss
{
    class Program
    {
        static void Main(string[] args)
        {
            AutoArrange(yourXssFilePath);
        }

    static void AutoArrange(string xssFile)
    {
        const int xPad = 80;
        const int yPad = 20;
        const int maxY = 1500;

        XDocument doc = XDocument.Load(xssFile);
        var ns = doc.Root.Name.Namespace;

        var shapes = doc.Descendants(ns + "Shape").ToList();

        int X = 0;
        int Y = 0;
        int columnW = 0;
        foreach (XElement shape in shapes)
        {
            int Height = int.Parse(shape.Attribute("Height").Value);
            int Width = int.Parse(shape.Attribute("Width").Value);
            if (Width > columnW) columnW = Width;

            shape.Attribute("X").Value = X.ToString();
            shape.Attribute("Y").Value = Y.ToString();

            Y += Height + yPad;

            if (Y > maxY)
            {
                X += columnW  + xPad;
                Y = 0;
                columnW = 0;
            }

        }

        doc.Save(xssFile);

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...