powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / ComboBox
7 сообщений из 7, страница 1 из 1
ComboBox
    #38437812
ЧитательX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно ли сделать так чтобы ComboBox, открытый например таким образом
Код: c#
1.
Combo_Obj.IsDropDownOpen = true;


оставался бы открытым и дальше при потере фокуса?
...
Рейтинг: 0 / 0
ComboBox
    #38442113
ЧитательX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну что никаких мыслей нет?
Нужен комбобокс, который остается открытым если из него уйти.
Это в принципе возможно?
...
Рейтинг: 0 / 0
ComboBox
    #38442230
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В принципе нет ничего невозможного. В данном случае, наверное лучше всего, взять стандартный (default) controltemplate и "заточить" его под свои нужды.
...
Рейтинг: 0 / 0
ComboBox
    #38442233
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
ComboBox
    #38442356
ЧитательX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Посмотрел ссылку. Жестокий путь - собрать свой собственный контрол.
Ну ладно будем как-нибудь жить дальше.
Спасибо!
...
Рейтинг: 0 / 0
ComboBox
    #38442427
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЧитательXЖестокий путь...
Попробовал навскидку "подточить" в рамках стандартного шаблона, но в данном конкретном случае получается больше борьба "против" (имеющегося функционала) чем "за" (требуемый функционал):
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
    public class XComboBox : ComboBox
    {
        Popup _popup = null;
        ToggleButton _toggle = null;
        public override void OnApplyTemplate()
        {
            base.OnApplyTemplate();
            _popup = GetTemplateChild("PART_Popup") as Popup;
            _toggle = this.GetChildOfType<ToggleButton>();
            _toggle.SetBinding(ToggleButton.IsCheckedProperty, new Binding("IsDropDownOpenX") { Source = this, Mode = BindingMode.TwoWay });
            _popup.SetBinding(Popup.IsOpenProperty, new Binding("IsChecked") { Source = _toggle, Mode = BindingMode.OneWay });
        }
        public static readonly DependencyProperty IsDropDownOpenXProperty = DependencyProperty.Register(
            "IsDropDownOpenX", typeof(bool), typeof(XComboBox), new UIPropertyMetadata(false, (s, e) => {
                XComboBox xcb = (XComboBox)s;
                xcb.IsDropDownOpen = xcb.IsDropDownOpenX;
            }));
        public bool IsDropDownOpenX { get { return (bool)this.GetValue(IsDropDownOpenXProperty); } set { this.SetValue(IsDropDownOpenXProperty, value); } }
    }
    public static class ExtensionMethods
    {
        public static T GetChildOfType<T>(this DependencyObject depObj)
            where T : DependencyObject
        {
            if (depObj == null) return null;

            for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++) {
                var child = VisualTreeHelper.GetChild(depObj, i);

                var result = (child as T) ?? GetChildOfType<T>(child);
                if (result != null) return result;
            }
            return null;
        }
    }


и далее в коде использовать IsDropDownOpenX вместо IsDropDownOpen
...
Рейтинг: 0 / 0
ComboBox
    #38484725
ЧитательX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Впечатляет! Есть на что посмотреть.
Я такие конструкции еще придумывать не умею!
Спасибо!
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / ComboBox
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]