2017-01-01 10 views
1

私はTextBoxを持っています。セットと私は私のロジックに応じてテキストボックスの値を変更して取得します。しかし、UIは変更に関して更新されません。ここでwpf用にUIが正しく更新されない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> 

セットであると

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で変更されていません。リアルタイムでUIを変更するにはどうすればよいですか?私はこのようにするのではなく、他の選択肢を開いています。

FYI - 私はこれは実際には、.NET Frameworkの4.5で修正されたバグです.NET 4.0

+0

こんにちは、あなたの入力値は?あなたがそれを与えたところで、私はUIまたはVMを意味し、あなたの期待される答えは何ですか? – Poovizhi

+0

私は入力をテキストボックスに入力しています。セッターでは空文字列の_omukTextの値を持っていますが、テキストボックスにはまだtextBoxにスペースが表示されています。 – lukai

+0

私は同じコードを使用していましたが、独自のOnPropertyChangedメソッドを使用しました。 – Poovizhi

答えて

3

を使用しています。詳細については、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 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/

関連する問題