Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
48 / 37 / 18
Регистрация: 15.09.2012
Сообщений: 191

Обновление Combobox

15.11.2019, 12:33. Показов 1738. Ответов 6

Студворк — интернет-сервис помощи студентам
Всем Ку! Только начинаю осваивать WPF, поэтому попрошу не кидаться камнями! Есть программа в которой реализован combobox , необходимо, чтобы был выпадающий список и пользователь мог сам ввести определенное ограниченное число. Я реализовал привязку следующим образом(представленные куски кода которые относятся к combobox):

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<ComboBox x:Name="CBMTabsBiasVal" 
        Foreground="Black" FontSize="14" FontStyle="Normal" PreviewTextInput="CBxMTabsBiasVal_PreviewTextInput"
        HorizontalAlignment="Left" Width="auto" VerticalAlignment="Center" Height="auto"  
        Margin="0,0,0,0" Grid.Row="0" Grid.Column="4" Grid.ColumnSpan="1"  IsEditable="True" 
        IsSynchronizedWithCurrentItem="True"
        ItemsSource="{Binding BiasItems}" SelectedValue="Bias">
 
        <ComboBox.Text>
              <Binding Path="Bias" NotifyOnValidationError="True" UpdateSourceTrigger="PropertyChanged">
                    <Binding.ValidationRules>
                        <ExceptionValidationRule/>
                        <DataErrorValidationRule/>
                   </Binding.ValidationRules>
               </Binding>
         </ComboBox.Text>
 </ComboBox>
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
public class ViewModel : IDataErrorInfo, INotifyPropertyChanged
{
        public double Bias { get; set; } = 1.5;
 
        public ObservableCollection<double> BiasItems { get; set; }
 
        public ViewModel()
        {
            BiasItems = new ObservableCollection<double>();
 
            for (int i = 0; Math.Round(i*0.1, 1) < 2.3; i++)
            {
                BiasItems.Add(Math.Round(i * 0.1, 1));
 
            }
 
        }
 
 
        public event PropertyChangedEventHandler PropertyChanged;
 
        public void OnPropertyChanged([CallerMemberName]string prop="")
        {
 
            if(PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(prop));
            }
                
        }
 
        public string Error
        {
 
            get { throw new NotImplementedException(); }
 
        }
 
        
        public string this[string columnName]
        {
            get
            {
                string error = String.Empty;
 
                
                switch (columnName)
                {
                    
                    case "Bias":
 
                        
                        if (Bias > 2.2)
                        {
                            
                            Bias = 2.2;
                            
                            error = "////";
                            OnPropertyChanged("Bias");
                        }
                        
                        break;
                 }
 
              return error;
           }
 
       }
}
Я хочу получить ограничение ввода текста, чтобы когда пользователь вводит недопустимое число, текст в поле менялся автоматически на максимальное значение. Но почему то в данном примере это не срабатывает. Если я устанавливаю UpdateSourceTrigger в LastFocus, ввожу число и убираю фокус с combobox, все выполняется как я планирую: идет подсветка и значение в поле устанавливается 2.2. Но если UpdateSourceTrigger установлено PropertyChanged, то только срабатывает подсветка, а значение в поле не меняется. Не могу понять почему так... Подскажите пожалуйста.

И второй вопрос, можно ли как-нибудь в combobox в XAML ограничить количество вводимых символов? Я в google нашел только с помощью свойств зависимости, но это мгко скажем не очень удобно. Неужели такое свойство по умолчанию не реализовано?

Пы.Сы.
На всех textbox'ах в программе такая привязка работает отлично, проблемы только с combobox.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.11.2019, 12:33
Ответы с готовыми решениями:

Автоматическое обновление данных в Combobox с БД
Здравствуйте! Есть одно окно для создания нового клиента в БД. В нем адрес выбирается с комбобокса, который заполняется данными из таблицы...

Исключение из ComboBox'а значений выбранных в других ComboBox'ов используя Binding
Возможно ли средствами Binding-a решить такую задачку: есть 5 TextBox - ов, и 3 ComboBox - а. значения всех TextBox - ов заносятся в...

DataGridTemplateColumn с ComboBox. Как подключить ItemSource к ComboBox из кода
Есть привязка к таблице и простые стобцы отлично выводят данные, даже DataGridComboBoxColumn к непосредственно к которому программно...

6
880 / 559 / 291
Регистрация: 21.11.2012
Сообщений: 1,554
15.11.2019, 13:08
попробуйте свойство Bias изменить на:
C#
1
2
3
4
5
6
private double bias = 1.5;
public double Bias
{
     get { return bias; }
     set { bias = value; OnPropertyChanged("Bias"); }
}
1
48 / 37 / 18
Регистрация: 15.09.2012
Сообщений: 191
15.11.2019, 13:42  [ТС]
Цитата Сообщение от hamin Посмотреть сообщение
попробуйте свойство Bias изменить на:
Я пробовал такую конструкцию, не помогло
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16147 / 11268 / 2890
Регистрация: 21.04.2018
Сообщений: 33,131
Записей в блоге: 2
15.11.2019, 14:13
hamin, Sniper53, INPC точно не причём.
Подсказаная hamin реализация типовая, удобнее, легче понимается.
Но проблема не в этом.

Sniper53, то что описываете не совсем вяжется с моими пониманием WPF.
Надо тестить - а я временно без компа.
Чтобы выловить ошибку, добавьте TextBox с привязкой к этому же свойству Bias.
И попробуйте из него менять значение свойства.
Надо посмотреть будет ли ComboBox синхронно менять своё отображение.
1
48 / 37 / 18
Регистрация: 15.09.2012
Сообщений: 191
15.11.2019, 14:28  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Надо посмотреть будет ли ComboBox синхронно менять своё отображение.
Да, ComboBox свое значение синхронно и сбрасывается когда выхожу за пределы.

Добавлено через 8 минут
Не успел отредактировать( Если при этом я ввожу значение в ComboBox, то в нем не сбрасывается, а в привязанном TextBox сбрасывается...
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16147 / 11268 / 2890
Регистрация: 21.04.2018
Сообщений: 33,131
Записей в блоге: 2
15.11.2019, 14:31
Sniper53, а наоборот.
Когда выходите из комбо и там остаётся неверное значение, в TextBox какое?

Добавлено через 41 секунду
Sniper53, ок. Уже ответили.

Добавлено через 58 секунд
Sniper53, это явный баг.

Добавлено через 1 минуту
Надо смотреть шаблон ComboBox.
0
48 / 37 / 18
Регистрация: 15.09.2012
Сообщений: 191
15.11.2019, 14:35  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Когда выходите из комбо и там остаётся неверное значение, в TextBox какое?
В комбо отображается неверное значение, в техтбосе все как нужно, 2.2 и значение самого свойства Bias 2.2. Когда в комбо вводится неверное значение, проверка в коде выполняется, он заходит в это условие, приравнивает свойству значение, но не меняет отображение.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.11.2019, 14:35
Помогаю со студенческими работами здесь

Combobox to Combobox binding according to Foreign Key
Всем привет! :) Во-первых хочу сказать всем, что это самый лучший (судя по собственному опыту) форум для проггеров. Так как прошлую...

Как сохранять данные из Combobox в файл и потом отображать данные из файла в Combobox-e?
как сохранять данные из Combobox в файл и потом отображать данные из файла в Combobox-e?

Обновление comboBox
Сейчас я обновляю список портов таким образом comboBox_ports.Items.Clear(); foreach(string portname in SerialPort.GetPortNames()) { ...

Обновление combobox
У меня такая ситуация, есть форма на которой combobox, возле него кнопка новый, при нажатии открывается форма я ввожу туда запись, и она...

Обновление combobox
Доброго времени суток. В вэбе я новичок, есть такая задача: вытянуть из БД факультеты в комбобокс, после выбора факультета в комбобоксе...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru