Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: Вильдар от 19-04-2016, 11:52:11

Название: Прозрачность элементов wpf на Палитре
Отправлено: Вильдар от 19-04-2016, 11:52:11
Добрый день всем,

Подскажите как задать прозрачность элемента на палитре.
На палитру добавляю listBox с картинками. Задаю прозрачный фон. А получается черный фон.
Извините, вам запрещён просмотр содержимого спойлеров.
Название: Re: Прозрачность элементов wpf на Палитре
Отправлено: Александр Пекшев aka Modis от 19-04-2016, 11:57:38
В упор в коде не вижу где вы задаете прозрачный фон))

А - нашел!
Попробуйте задать прозрачный фон для DataTemplate элементов. Вы же их "переопределяете", значит и настроить должны сами
Название: Re: Прозрачность элементов wpf на Палитре
Отправлено: Вильдар от 19-04-2016, 11:58:51
Background у ListBox:
Код - XML [Выбрать]
  1. <ListBox ... Background="Transparent">

Так? Убрал Background у listBox'а, добавил к StackPanel в DataTemplate:
Код - XML [Выбрать]
  1. <DataTemplate x:Key="ImageCell">
  2.             <StackPanel Orientation="Vertical" Background="Transparent">
Получился белый фон.
Название: Re: Прозрачность элементов wpf на Палитре
Отправлено: Александр Пекшев aka Modis от 19-04-2016, 12:01:29
Или добавьте в DataTemplate свойство BasedOn={ListBoxItem} (не помню как правильно пишется  ::) )
Название: Re: Прозрачность элементов wpf на Палитре
Отправлено: Вильдар от 19-04-2016, 12:07:49
BasedOn ведь относится к стилям https://msdn.microsoft.com/ru-ru/library/system.windows.style.basedon%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396
У меня тут стили пока не используются вроде.
не пойму что-то.
Название: Re: Прозрачность элементов wpf на Палитре
Отправлено: Александр Пекшев aka Modis от 19-04-2016, 12:13:00
BasedOn ведь относится к стилям https://msdn.microsoft.com/ru-ru/library/system.windows.style.basedon%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396
У меня тут стили пока не используются вроде.
не пойму что-то.
Если вы используете BasedOn=ListBoxItem, то у вас стиль будет повторять стиль ListBoxItem, кроме переопределенных свойств
Ну и конечно нужно попробовать прозрачность установить и для самого ListBox и для DataTemplate
Название: Re: Прозрачность элементов wpf на Палитре
Отправлено: Вильдар от 19-04-2016, 12:14:03
Хотелось бы получить результат похожий на штатные палитры автокада.
Может не прозрачность задавать, а подобрать цвет под текущую тему автокада?
Название: Re: Прозрачность элементов wpf на Палитре
Отправлено: Александр Пекшев aka Modis от 19-04-2016, 13:03:40
Ну и конечно нужно попробовать прозрачность установить и для самого ListBox и для DataTemplate
Попробовали?
Название: Re: Прозрачность элементов wpf на Палитре
Отправлено: Вильдар от 19-04-2016, 13:40:43
Да. Черное получается.
Пока думаю задавать цвет соответствующий теме автокада. Для темной #5c5c5c, для светлой белый.
Название: Re: Прозрачность элементов wpf на Палитре
Отправлено: Александр Пекшев aka Modis от 19-04-2016, 13:43:17
Да. Черное получается.
Пока думаю задавать цвет соответствующий теме автокада задавать. Для темной #5c5c5c, для светлой белый.
Плохое решение. Не универсальное. Нужно продолжать искать причину!
Например, попробовать другой элемент для эксперимента
Название: Re: Прозрачность элементов wpf на Палитре
Отправлено: Дмитрий Загорулькин от 19-04-2016, 14:21:49
Я когда с этим столкнулся (фон WPF окошка) назначил просто белый цвет фону, вне зависимости от темы. Пока времени не было с этим разбираться. А как Вы определяете текущую тему?
Название: Re: Прозрачность элементов wpf на Палитре
Отправлено: Александр Пекшев aka Modis от 19-04-2016, 14:37:30
vildar82, а можете сделать пробный проект для тестов?
Название: Re: Прозрачность элементов wpf на Палитре
Отправлено: Вильдар от 19-04-2016, 15:30:40
Тема определяется из переменной COLORTHEME
Код - C# [Выбрать]
  1. Application.GetSystemVariable("COLORTHEME")
Тестовый проект щас подготовлю.

Прикрепил проект.
Название: Re: Прозрачность элементов wpf на Палитре
Отправлено: Александр Пекшев aka Modis от 20-04-2016, 19:20:37
Плохое решение. Не универсальное. Нужно продолжать искать причину!
Беру свои слова обратно)
Потыкался с проектом, погуглил немного и пришел к простому выводу - контейнер в палитре просто не имеет цвета, поэтому всегда черный.
Значит ваш вариант - задавать фон в зависимости от темы единственный подходящий.
Что точно могу подсказать:
Для светлой темы кисть называется WhiteSmoke (#FFF5F5F5)
Для темной системной кисти нет. Цвет #FF5C5C5C