2017-01-01 52 views
1

我有一個TextBox。在集合中,根據我的邏輯,我已經修改了文本框的值。但是UI沒有更新。用戶界面未正確更新爲wpf TextBox

  <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"); 
     } 
    } 

假設,用戶把一個空間在文本框中,根據我的二傳手,該值應設置爲空字符串。但實際上,絃線保持原樣,只有一個空間。該屬性在UI中未被更改。我怎樣才能實時更改用戶界面?我願意接受其他選擇,而不是這樣做。

僅供參考 - 我使用.NET 4.0

+0

嗨,你的輸入值是什麼?你給出的那個,我的意思是UI或虛擬機,你期望的答案是什麼? – Poovizhi

+0

我在文本框中輸入一個空格。在setter中,我有_omukText的值來清空字符串,但在文本框中它仍然在文本框中顯示一個空格。 – lukai

+0

我使用相同的代碼,它可以正常工作,但使用我自己的OnPropertyChanged方法。 – Poovizhi

回答

3

這是一個實際上已被固定在.NET Framework 4.5中的錯誤。有關更多信息,請參閱Matt的答案。

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框架目前是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/