Невозможно ввести десятичную точку после ввода числа в TextBox при привязке к double [duplicate]

Вы забыли :. Из-за этого весь селектор был поврежден и не работал. http://jsfiddle.net/a96f6/87/

Изменить: похоже (после обновления?) это больше не работает, попробуйте следующее:

input::-webkit-input-placeholder{
    color:red;
}
input:-moz-placeholder {
    color:red;
}

Примечание. Не смешивайте селекторы префикса поставщика (-moz, -webkit, -ms, ...). Например, Chrome не понимает «-moz-», а затем игнорирует весь селектор.

Редактирование для пояснения: чтобы он работал во всех браузерах, используйте этот код:

::-webkit-input-placeholder {
    color:red;
}

::-moz-placeholder {
    color:red;
}

::-ms-placeholder {
    color:red;
}

::placeholder {
    color:red;
}

8
задан Sabyasachi Mishra 18 June 2015 в 09:15
поделиться

3 ответа

Вы обновляете свою собственность каждый раз при изменении значения. Когда вы вводите ., он записывается в вашу модель просмотра и обновляется.

, например. если вы введете 100., округлите его до 100, таким образом вы не увидите ни одной точки.

У вас есть некоторые варианты, чтобы изменить это поведение:

использовать Отложенное связывание:

<TextBox Text="{Binding Path=TransactionDetails.TransactionAmount, 
                        Mode=TwoWay, 
                        UpdateSourceTrigger=PropertyChanged, 
                        Delay=250}" 
         Grid.Column="3" 
         Grid.ColumnSpan="2" 
         Grid.Row="5" 
         x:Name="TextBoxAmount" />

изменить значение только в том случае, если оно отличается от сохраненного (я бы рекомендовал это для каждой привязки):

private double _transactionAmount; 
public double TransactionAmount  
{
  get { return _transactionAmount; }    
  set
  { 
    if (_transactionAmount != value)
    {
      _transactionAmount = value; 
      Notify("TransactionAmount"); 
    }
  }

или использовать какой-то вид проверки, например ValidatesOnExceptions.

5
ответ дан Herm 17 August 2018 в 09:51
поделиться
  • 1
    Спасибо, я получил ваш вопрос. Теперь его работа – Sabyasachi Mishra 19 May 2015 в 07:27

Лучшее решение, которое я получил с помощью StringFormat, например

<TextBox Text="{Binding TransactionDetails.TransactionAmount, Mode=TwoWay, 
UpdateSourceTrigger=PropertyChanged,StringFormat=N2}" Grid.Column="3" 
Grid.ColumnSpan="2" Grid.Row="5" x:Name="TextBoxAmount" />

Также мы можем перейти к пользовательскому строковому формату в соответствии с требованиями

4
ответ дан Sabyasachi Mishra 17 August 2018 в 09:51
поделиться

Ваша проблема связана с UpdateSourceTrigger. Вместо использования там вы можете использовать что-то вроде этого,

private double amount;
public double Amount
    {
        get
        {
            return amount;
        }
        set
        {
            amount= value;
            PropertyChanged();
            Calculation();
        }
    }

PropertyChanged () Вы получите это из INotifyPropertyChanged. Для получения дополнительной информации нажмите здесь https://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged (v = vs.110) .aspx

1
ответ дан Dinesh balan 17 August 2018 в 09:51
поделиться
  • 1
    Если я удаляю & quot; UpdateSourceTrigger & quot; мой Notify не работает. На котором я делаю математический расчет – Sabyasachi Mishra 19 May 2015 в 06:47
  • 2
    Уведомление будет вызываться только после того, как текстовое поле потеряло фокус. – Dinesh balan 19 May 2015 в 06:59
  • 3
    На самом деле у меня есть несколько текстовых полей. Из свойств, измененных в каждом текстовом поле, я вычисляю добавление и проценты – Sabyasachi Mishra 19 May 2015 в 07:02
  • 4
    Вы можете сделать свой расчет в настройке свойства. после изменения свойства. Вы можете вызвать свой метод расчета внутри самого сеттера. Я обновил это в ответ – Dinesh balan 19 May 2015 в 07:16
Другие вопросы по тегам:

Похожие вопросы: