UI未针对wpf TextBox正确更新

时间:2017-01-01 07:00:42

标签: c# wpf

我有一个TextBox。在set和get中我根据我的逻辑修改了文本框值。但是关于修改的UI没有更新。

            <TextBox  
                Width="185"
                Name="TextBoxNumber" 
                VerticalAlignment="Center" 
                HorizontalAlignment="Left"
                BorderThickness="0"
                Margin="5, 4, 0, 2"
                Text="{Binding Path=OmukText, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
            </TextBox>

这是set和get

    private string _omukText = string.Empty;
    public string OmukText
    {
        get 
        {
            return this._omukText;
        }
        set
        {
            if(value.Equals(" "))
            {
                _omukText = string.Empty;
            }
            if (value.Length > 4 && !value.Contains(" "))
            {
                this._omukText = value.Insert(4, " ");
            }
            else 
            {
                this._omukText = value.Trim();
            }
            this.OnPropertyChanged("OmukText");
        }
    }

假设,用户在TextBox中放置一个空格,根据我的setter,该值应设置为空字符串。但实际上字符串仍然只有一个空格。 UI中未更改该属性。如何实时更改UI?我愿意接受其他选择而不是这样做。

仅供参考 - 我使用的是.NET 4.0

1 个答案:

答案 0 :(得分:3)

这实际上是一个已在.NET Framework 4.5中修复的错误。有关更多信息,请参阅马特的答案。

Bound WPF TextBox is not updating value when the bound property enforces some business rules

如果由于某些原因无法升级到4.5,可能需要尝试此处建议的解决方法:

WPF - MVVM - Textbox getting out of sync with viewmodel property

应该提到的是,最早的官方支持的.NET Framework版本目前是4.5.2,所以毕竟升级可能是个主意:https://blogs.msdn.microsoft.com/dotnet/2015/12/09/support-ending-for-the-net-framework-4-4-5-and-4-5-1/