WPF, связывающий не работающий правильно со свойствами международного типа

У меня есть свойство int тип, по моему мнению, модель, которая связывается с a TextBox. Все работает правильно, TwoWay привязка хорошо работает кроме одного случая -

Если я очищаю значение TextBox, метод set свойства не делает назван и хотя значение очищено в TextBox, свойство все еще содержит предыдущее значение.

кто-либо столкнулся с подобной проблемой? есть ли какое-либо обходное решение для этого?

Вот свойство -

public int MaxOccurrences
{
    get
    {
        return this.maxOccurrences;
    }
    set
    {
        if (this.maxOccurrences != value)
        {
            this.maxOccurrences = value;
            base.RaisePropertyChanged("MaxOccurrences");
        }
    }
}

Вот то, как я связываю свойство в xaml -

<TextBox Text="{Binding Path=MaxOccurrences, Mode=TwoWay, 
    NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}" 
    HorizontalAlignment="Center" Width="30" Margin="0,0,5,0"/>
9
задан akjoshi 30 August 2012 в 14:53
поделиться

2 ответа

Это потому, что значение int не может быть нулевым . Лучше всего использовать свойство string , которое преобразует значение в вашем коде в обязательное поле свойства int.

Таким образом вы можете выполнить

if(string.IsNullOrEmpty(text))
{
  this.intValue = 0;
}
0
ответ дан 4 December 2019 в 06:26
поделиться

Частично это предположение (у меня сейчас нет VS под рукой, чтобы опробовать его), но я думаю, это потому, что очищенное текстовое поле представляет собой пустую строку ( "" ), который не может быть неявно преобразован в int . Вам, вероятно, следует реализовать преобразователь типов, чтобы обеспечить преобразование для вас. (возможно, вы захотите преобразовать "" в 0)

6
ответ дан 4 December 2019 в 06:26
поделиться
Другие вопросы по тегам:

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