私はTextBoxでWPFビューを持っており、UpdateSourceTriggerをPropertyChangedに設定してViewModelにテキストフィールドをバインドしています。値が設定されていない場合 WPF - MVVM - viewmodelプロパティとの同期が外れるテキストボックス
<TextBox Text="{Binding Name, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" />
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.DataContext = new MainViewModel();
}
}
public string Name
{
get { return _Name; }
set
{
if (_Name != value)
{
if (value.Length <= 10)
{
_Name = value;
}
RaisePropertyChanged("Name");
}
}
}
が、私はまだRaisePropertyChanged(単純にPropertyChangedを発射する):ViewModelにでプロパティのセッターでは、私が10文字を超えるテキストを防止するための簡単なチェックを持っています。
UIの11番目の文字を入力すると_Nameが更新されないという問題があります。私はPropertyChangedを実行し、getアクセサが呼び出されるのを見ることができ、文字列は10文字しか返しません。しかし、私のTextBoxはこれを反映していません。それでも11文字の文字列が表示されます。
さらに、11番目の文字でセッターのテキストを「ERROR」に変更し、fireプロパティを変更した場合、TextBoxは更新されたテキストを表示するように更新します。
なぜ私は設定者のテキストを以前の値に戻すとUIにこれが反映されないのですか?
私は最大文字を扱う別の方法があると知っていますが、なぜこれは機能しませんか?
ありがとうございます!これが母船に報告されているのであれば、どんな考えですか?そうでなければ、私はそうするでしょう。 –
@SteveOsborn:母親に報告されているかどうか分かりません:)前に見たことがありますが、何も見つかりませんでしたが、正確に何を検索するのか少し難解です。それを報告して、あなたが持っているときに私に知らせてください、そして私はそれをupvoteします。 –
https://connect.microsoft.com/VisualStudio/feedback/details/745368/wpf-textbox-binding-doesnt-work-properly –