在源更改时TextBox值未绑定到MVVM中的属性

时间:2013-09-13 21:47:30

标签: wpf silverlight xaml mvvm

用于绑定文本框的我的ViewModel代码如下:

private float _maxKaxCalculate;
        public float MaxKaxCalculate
        {
            get { return _maxKaxCalculate; }
            set
            {
                if (value != _maxKaxCalculate)
                {
                    _maxKaxCalculate = value;
                    OnPropertyChanged("MaxKaxCalculate");                    
                }
            }
        }
        public void CalculateMaxKaz()
        {            
            if (CouponList.Count > 0)
            {
                _maxKaxCalculate = 1;
                foreach (CouponDC cDC in CouponList)
                {
                    _maxKaxCalculate *= cDC.Rate;
                }
                _maxKaxCalculate *= Convert.ToSingle(TutarValue);
            }
            else
                _maxKaxCalculate = 0;

            _maxKaxCalculate = Convert.ToSingle(Math.Round(_maxKaxCalculate, 2));

        }

        private float _tutarValue;
        public float TutarValue
        {
            get { return _tutarValue; }
            set
            {
                if (value != _tutarValue)
                {
                    _tutarValue = value;
                    OnPropertyChanged("TutarValue");
                }
            }
        }

“我的视图”部分包含以下文本框代码

<TextBox Width="65" Text="{Binding Path=MaxKaxCalculate,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged,StringFormat=N2}" Style="{StaticResource Input1}" Grid.Row="3" Grid.Column="3" HorizontalAlignment="Left" Margin="0,2,0,3"  />

我的_maxKaxCalculate变量获得了一些正确的值,但Textbox没有在View中获取该值。是否需要刷新UI或需要BeginInvoke?请提示。

1 个答案:

答案 0 :(得分:0)

如果您设置

_maxKaxCalculate = 0;

不会有关于此更改的通知。使用

MaxKaxCalculate = 0;

使用带有通知的属性的setter。