Автоматизированный метод для экспорта схем Архитектора Предприятия?

Я могу дать Вам хорошо решение, и можно пойти с ним, но прежде чем я сделаю я собираюсь попытаться объяснить, почему Документ не DependencyProperty для начала.

В течение времени жизни управления RichTextBox, свойство Document обычно не изменяется. RichTextBox инициализируется с FlowDocument. Тот документ отображен, может быть отредактирован и искажен во многих отношениях, но базовое значение свойства Document остается что один экземпляр FlowDocument. Поэтому нет действительно никакой причины, это должно быть Свойство Зависимости, т.е., Связываемое. Если у Вас есть несколько местоположений, которые ссылаются на этот FlowDocument, Вам только нужна ссылка однажды. Так как это - тот же экземпляр везде, изменения будут доступны для всех.

я не думаю, что FlowDocument поддерживает уведомления об изменении документа, хотя я не уверен.

Однако вот решение. Перед запуском так как RichTextBox не реализует INotifyPropertyChanged, и Документ не является свойством зависимости, у нас нет уведомлений, когда свойство RichTextBox's Document изменяется, таким образом, привязкой может только быть OneWay.

Создают класс, который обеспечит FlowDocument. Привязка требует существования Свойства Зависимости, таким образом, этот класс наследовался DependencyObject.

class HasDocument : DependencyObject
    {
        public static readonly DependencyProperty DocumentProperty =
            DependencyProperty.Register("Document", 
                                        typeof(FlowDocument), 
                                        typeof(HasDocument), 
                                        new PropertyMetadata(new PropertyChangedCallback(DocumentChanged)));

        private static void DocumentChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
        {
            Debug.WriteLine("Document has changed");
        }

        public FlowDocument Document
        {
            get { return GetValue(DocumentProperty) as FlowDocument; }
            set { SetValue(DocumentProperty, value); }
        }
    }

Создают Окно с форматируемым полем в XAML.

<Window x:Class="samples.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Flow Document Binding" Height="300" Width="300"
    >
    <Grid>
      <RichTextBox Name="richTextBox" />
    </Grid>
</Window>

Дают Окну поле типа HasDocument.

HasDocument hasDocument;

конструктор Окна должен создать привязку.

hasDocument = new HasDocument();

InitializeComponent();

Binding b = new Binding("Document");
b.Source = richTextBox;
b.Mode = BindingMode.OneWay;
BindingOperations.SetBinding(hasDocument, HasDocument.DocumentProperty, b);

, Если бы Вы хотите смочь объявить привязку в XAML, необходимо было бы заставить класс HasDocument произойти из FrameworkElement так, чтобы это могло быть вставлено в логическое дерево.

Теперь, если необходимо было изменить свойство Document на HasDocument, Документ форматируемого поля также изменится.

FlowDocument d = new FlowDocument();
Paragraph g = new Paragraph();
Run a = new Run();
a.Text = "I showed this using a binding";
g.Inlines.Add(a);
d.Blocks.Add(g);

hasDocument.Document = d;
13
задан Shane C. Mason 17 September 2009 в 21:39
поделиться

2 ответа

Я не знаком с этим продуктом, но на веб-сайте, на который вы ссылаетесь, упоминается интерфейс автоматизации. Это должно позволить вам управлять Enterprise Architect с помощью языка сценариев, такого как VBScript или JavaScript. Через этот интерфейс можно будет печатать; в этом случае вы можете установить драйвер принтера PDF (или распечатать файл с помощью стандартного драйвера принтера PostScript и использовать GhostScript для преобразования его в PDF.

1
ответ дан 2 December 2019 в 00:58
поделиться

У нас есть Enterprise Architect, и он прекрасно интегрирован с Word. Мы написали наше собственное приложение Wicket / Jetty WebApp, которое публикует ссылки на диаграммы EA в виде URL-адреса HTTP, который мы затем «вставляем и связываем» в наши документы UCR (или что-то еще). Веб-приложение отображает древовидную структуру ссылок, по одной для каждого пакета, а затем мы просто копируем ссылку в текстовый документ.

Это действительно хорошо работает. Мы можем внести столько изменений, сколько захотим, в EA, а затем в документе Word просто нажмите CTRL + A, чтобы выбрать все, и нажмите F9, чтобы обновить все ссылки. К сожалению, я не писал код, поэтому не могу точно сказать, как он опубликован в EA. Я думаю, что есть какой-то Java-код, который просто опрашивает сервер EA и высасывает все, если обнаруживает изменения.

1
ответ дан 2 December 2019 в 00:58
поделиться