WPF ColorPicker | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Потихоньку осваиваю WPF. Обнаружил, что в WPF отсутствует ColorDialog. Народ советует использовать ColorPicker из Extended WPF Toolkit wpftoolkit.codeplex.com (можно поставить через NuGet). Создал проект WPF, добавил Extended WPF Toolkit, добавил
и
Запускаю окно, щёлкаю правой кнопкой мыши, вижу: [attachment 25951 s1.png] и радуюсь увиденному. Затем добавляю обработчик события:
Теперь можно изменить цвет окна. Однако, жутко не нравится два момента. Во первых, что бы изменить цвет окна после появления меню надо щёлкнуть мышью непосредственно по ColorPicker1. Так, если щёлкнуть по label ("Указать цвет") меню просто закроется. Как можно перехватить click с WrapPanel и перенаправить его на ColorPicker1? У WrapPanel ведь нет события Click. Может, надо использовать не WrapPanel, а что то другое? Во вторых, после выбора цвета меню продолжает висеть на экране, и что бы его закрыть надо щёлкнуть куда то в окно. Как можно закрыть myContextMenu? У ContextMenu ведь нет свойства Close(). Исправлено 1 раз(а). Последнее : S-type, 28.09.16 23:33 |
Re: WPF ColorPicker | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Изменил ColorPicker_Click - теперь после смены цвета контекстное меню закрывается. Второй вопрос закрыт.
|
Re: WPF ColorPicker | |
---|---|
SoccerStudio Сообщений: 5055 Откуда: Подмосковье Дата регистрации: 28.11.2006 |
Вообще-то это штатное поведение. Если что-то выбирается из меню, то нужно именно кликнуть пункт этого меню, а если кликнуть мимо, то меню закрывается. Ну, а так, конечно, реализовать теоретически можно, я такие штуки делал. Правда, давно уже не ковырялся, могу ошибаться, но если правильно помню, событие Click маршрутизируется вверх по иерархии, соответственно, можно попробовать ловить событие, например, самого окна.
------------------ "Здесь я, братцы, сдержу матерщину, и скажу только "... мать!"" (с) Шаов |
Re: WPF ColorPicker | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Второй вопрос не закрыт... Есть два состояния Standart и Advansed. Для Standart работает нормально, а для Advansed - глючит. Пришлось убрать "myContextMenu.IsOpen = false;".
Нельзя ли в WPF использовать ColorDialog из WindowsForms? А ещё - можно как то русифицировать ColorPicker? Или, только брать исходники, переводить и компилить свою библиотеку? |
Re: WPF ColorPicker | |
---|---|
SoccerStudio Сообщений: 5055 Откуда: Подмосковье Дата регистрации: 28.11.2006 |
Можно, почему нет. Даже рекомендуется. Вообще-то сделать свой ColorPicker было бы гораздо быстрее, чем пытаться переиначить какой-то сторонний эдемент, тем более варианты внешнего вида этого элемента могут быть ограничены разве что пределами собственной фантазии. У того же Макдональда достаточно подробно рассказывается, как делать свои элементы, причем именно на примере ColorPicker-а. Ну и на Code-Project наверняка пару-тройку примеров подобного найдешь. ------------------ "Здесь я, братцы, сдержу матерщину, и скажу только "... мать!"" (с) Шаов Исправлено 2 раз(а). Последнее : SoccerStudio, 30.09.16 06:56 |
Re: WPF ColorPicker | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Почему то был уверен, что использовать в WPF элементы из WinForms это плохая идея... Пошёл изучать этот вопрос. |
Re: WPF ColorPicker | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Добавил в ссылки Sustem.Windows.Forms, на форму добавил:
в код добавил:
Потратил 15 минут и всё работает! Спасибо за помощь. |
Re: WPF ColorPicker | |
---|---|
SoccerStudio Сообщений: 5055 Откуда: Подмосковье Дата регистрации: 28.11.2006 |
Элементы - да, там для них специальный контейнер требуется. А диалоги, тем более если для них нет аналогов - совсем дело другое. ------------------ "Здесь я, братцы, сдержу матерщину, и скажу только "... мать!"" (с) Шаов |
© 2000-2024 Fox Club  |