Как удалить WPF контрол из палитры?

Автор Тема: Как удалить WPF контрол из палитры?  (Прочитано 8287 раз)

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

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 738
Добавляю WPF Control в палитру с помощью метода PaletteSet.AddVisual. Но не нашел никакого способа, чтобы этот контрол удалить из палитры. К тому же, у WPF контрола не нашел каких-то методов, чтобы его можно было уничтожить. Подскажите, можно ли это как-то сделать?

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 738
Re: Как удалить WPF контрол из палитры?
« Ответ #1 : 26-10-2016, 18:26:18 »
Нашел, вроде, способ. PaletteSet.Remove(0). Не знаю, насколько это правильно, но работает.

Онлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13894
  • Карма: 1789
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Как удалить WPF контрол из палитры?
« Ответ #2 : 26-10-2016, 18:50:14 »
Дмитрий Загорулькин
PaletteSet.AddVisual возвращает экземпляр класса Palette. Поэтому логичнее наверное воспользоваться не методом PaletteSet.Remove(int index), а PaletteSet.Remove(Palette pal), которой и передавать значение из PaletteSet.AddVisual. Не проверял.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 738
Re: Как удалить WPF контрол из палитры?
« Ответ #3 : 26-10-2016, 19:09:55 »
Судя по всему, предложенный Вами метод доступен, если подключить AdUiPalettes.dll, которую добавили в 2015 версии. Согласен, так логичнее. Но я пока не готов отказаться от поддержки 2014 версии.

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Как удалить WPF контрол из палитры?
« Ответ #4 : 26-10-2016, 21:48:12 »
Но я пока не готов отказаться от поддержки 2014 версии.
dynamic никто не отменял.

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 738
Re: Как удалить WPF контрол из палитры?
« Ответ #5 : 26-10-2016, 22:08:23 »
Вот тут я не понял. А как он мне поможет, если в 2014 нет такого метода?

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Как удалить WPF контрол из палитры?
« Ответ #6 : 26-10-2016, 22:21:59 »
Вот тут я не понял. А как он мне поможет, если в 2014 нет такого метода?
Очепятка, 😀. Не dynamic, а reflection. А точнее - InvokeMember. Т.е. в runtime определяет версию акада и через конструкцию if/else дергаешь нужную сигнатуру.

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Как удалить WPF контрол из палитры?
« Ответ #7 : 26-10-2016, 22:32:09 »
Пример использования функции, способ вызова которой может быть разным в разных версиях акада: http://bushman-andrey.blogspot.ru/2016/08/windows-2.html?m=1

Онлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13894
  • Карма: 1789
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Как удалить WPF контрол из палитры?
« Ответ #8 : 26-10-2016, 22:32:19 »
Вот тут я не понял. А как он мне поможет, если в 2014 нет такого метода?
Очепятка, 😀. Не dynamic, а reflection. А точнее - InvokeMember. Т.е. в runtime определяет версию акада и через конструкцию if/else дергаешь нужную сигнатуру.
А смысл? Если и так работает во всех версиях? Я просто не проверил 2014 версию, бегло глянув документацию для 2017-го.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 738
Re: Как удалить WPF контрол из палитры?
« Ответ #9 : 26-10-2016, 23:07:37 »
Очепятка, 😀. Не dynamic, а reflection. А точнее - InvokeMember. Т.е. в runtime определяет версию акада и через конструкцию if/else дергаешь нужную сигнатуру.
Как верно заметил Александр Наумович, в моем случае в этом нет смысла. Но пример интересный, спасибо! Может быть, в будущем пригодится.

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Как удалить WPF контрол из палитры?
« Ответ #10 : 26-10-2016, 23:45:21 »
А смысл? Если и так работает во всех версиях? Я просто не проверил 2014 версию, бегло глянув документацию для 2017-го.
Ну, если работает во всех версиях, то смысла конечно же нет. Например, смысл есть когда со временем происходит изменение в сигнатуре метода, или конструтора (к примеру).