Отображение/изменение свойств объектов в WPF палитре. Проблемы с фокусом.

Автор Тема: Отображение/изменение свойств объектов в WPF палитре. Проблемы с фокусом.  (Прочитано 16849 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Дмитрий Загорулькин, спасибо за разъяснения. Раз уже Вы все попробовали, то не вижу смысла повторять этот путь и сразу перейти к реализации своей палитры. И вот тут второе огромное спасибо за предоставленный пример. Сегодня весь день "прикручивал" его к своим нуждам. Вроде не плохо получается )) Сначала конечно скопипастил, но дальше уже буду подробно разбираться и пилить под свой проект.
Единственное, что у меня вызвало вопрос и я так и не понял почему это происходит у меня и не происходит у вас в вашем примере:
Вот в этом месте:
Код - C# [Выбрать]
  1. public PropertiesPalette()
  2. {
  3.     InitializeComponent();
  4.     AcadHelpers.Documents.DocumentCreated += Documents_DocumentCreated;
  5.     AcadHelpers.Documents.DocumentActivated += Documents_DocumentActivated;
  6.     foreach (Document document in AcadHelpers.Documents)
  7.     {
  8.         document.ImpliedSelectionChanged -= Document_ImpliedSelectionChanged;
  9.         document.ImpliedSelectionChanged += Document_ImpliedSelectionChanged;
  10.     }
  11.     if(AcadHelpers.Document != null)
  12.         ShowPropertiesControlsBySelection();
  13. }
У меня ловится ошибка при загрузке палитры:

Я так-то понимаю, что это на строчке document.ImpliedSelectionChanged -= Document_ImpliedSelectionChanged; происходит, но никак не могу понять, почему в вашем примере не происходит

Оффлайн Дмитрий ЗагорулькинАвтор темы

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
У меня ловится ошибка при загрузке палитры:
Уже обсуждали как-то: http://adn-cis.org/forum/index.php?topic=7555.msg24231#msg24231
но никак не могу понять, почему в вашем примере не происходит
Не знаю, честно :)

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Дмитрий Загорулькин, хотел Вам показать что получается.

Работы еще конечно много. С виду хоть и работает все, но есть несколько неприятных моментов надо которыми еще трудиться и трудиться

Оффлайн Дмитрий ЗагорулькинАвтор темы

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Симпатично! На полноценный PropertyGrid пока не сильно похоже, но допилить можно.

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Симпатично! На полноценный PropertyGrid пока не сильно похоже, но допилить можно.
А полноценный и не нужен) Палитра будет работать только с конкретными свойствами моего "примитива". По сути, тоже самое реализовали в СПДС модуле для 2018 автокада (как минимум в бета-версии).
З.Ы. Забавно, когда тебе приходит идея и пока ты ее обдумываешь - выходит что-то с точно такой-же реализованной идеей

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
На полноценный PropertyGrid пока не сильно похоже, но допилить можно
Вот так лучше ))



Оффлайн Дмитрий ЗагорулькинАвтор темы

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Конечно, лучше :)
А есть возможность изменять ширину поля?

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
А есть возможность изменять ширину поля?
Хмм.. Не подумал об этом. Я сделал для ColumnDefinition Width="*", чтобы обе колонки были одинаковы. Сделать конечно не сложно, но вот в моем случае не совсем будет удобно, т.к. в палитру добавляются UserControl для конкретного примитива в зависимости от выбранных примитивов. Т.е. если будет два разных примитива выбрано, то отобразятся два Expander для них (у меня пока только один примитив в наличии). И вот в этом случае ширина колонок будет меняться только внутри одного UserControl. Не, конечно можно придумать обходные пути (их, в принципе, всегда можно придумать), но пока-что не вижу смысла