問題タブ [updatesourcetrigger]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
5502 参照

wpf - WPF の UpdateSourceTrigger=PropertyChanged および StringFormat に関する問題

アプリケーションに、クラスの 10 進数フィールドにデータ バインドされたテキスト ボックスがあり、バインド モードは双方向です。通貨の書式設定に StringFormat={0:c} を使用しています。

「UpdateSourceTrigger」に触れない限り、これは正常に機能します。UpdateSourceTrigger=PropertyChanged を設定すると、入力しているテキストの書式設定が停止します。

これが私のコード例です

Employee.cs

EmployeeList.cs:

Window1.xaml:

上記のコードから「UpdateSourceTrigger=PropertyChanged」を削除すると、正常に動作します。

StringFormat の代わりに Converter を使用してみましたが、それでも問題は解決しません。

0 投票する
3 に答える
1632 参照

c# - wpfでバインディングのデフォルトの動作をグローバルに変更する方法はありますか?

バインディングのデフォルトの動作を変更する方法はありますか?

これは、ControlTemplate または Style を介して行うことができますか?

0 投票する
1 に答える
11760 参照

textbox - UpdateSourceTrigger=PropertyChanged の TextBox のテキストは、テキスト入力の強制によってソース値が変更されない場合に更新されません。

TextプロパティにTwoWay MultiBindingがあり、 UpdateSourceTriggerPropertyChangedに設定されているテキスト ボックスがあります。最初のBindingは、値を小数点以下 1 桁に丸めるPropertyChangedCallBack関数を持つ依存関係プロパティ ( Value )に対するものです。

テキスト ボックスの目的は、テキスト ボックスがフォーカスを失ったときではなく、ユーザーが入力したときに丸めを実行することです。そのため、 UpdateSourceTriggerがPropertyChangedに設定されています。

私が抱えている問題は、値が変更されないテキストが入力された場合、 Textプロパティとが同期しなくなることです。丸め操作によってValueが変更された場合にのみ、 Textがその場で更新されます。たとえば、TextValueが両方とも 123.4 で、ユーザーがこの後に 1 を入力した場合、Valueは同じ値 (123.4) に丸められますが、Textは 123.41 を示します。ただし、4 の後に 9 を入力すると、Valueは 123.5 に切り上げられます。この実際の変更により、Textは同じ (123.5) に更新されます。

ソースが最後のトリガーから変更されていない場合でも、テキスト ボックスをソースから強制的に更新する方法はありますか? 使用してみましたが、これはUpdateSourceTriggerがExplicitに設定されてBindingExpressionBase.UpdateTarget()いる場合にのみ機能します。これは、 UpdateTargetを呼び出すことができる適切な時間 ( TextInputハンドラーなど)の前にが更新されないため、使用できません。バインドされたValueからText値を明示的に更新する、一時的にValueを実際に変更して更新を呼び出すなどの他の方法を試しましたが、これらの「ハック」は機能しないか、他の問題を引き起こします。

どんな助けでも大歓迎です。

コードは以下です。

XAML スニペット

C# スニペット

コンバータークラスが必要

0 投票する
1 に答える
5315 参照

wpf - WPF DatePicker UpdateSourceTrigger PropertyChanged が機能しない

私はMVVMを使用しており、日付ピッカーコントロールのテキスト変更のボタンを有効にしたい..

XAML コード: DatePicker でのバインド

ボタンのバインディング:

ビュー モデル コード: ボタンのクリックに DelegateCommand を使用しています

モデル デリゲートの初期化の表示

AllowSubmit の実装

InactiveDate プロパティの実装

SubmitCommand.RaiseCanExecuteChanged()DateTimePicker に文字を入力したらボタンを有効にする必要がありますが、それは起こっていません。

0 投票する
1 に答える
6785 参照

wpf - 編集可能なWpfコンボボックスでソース更新トリガーを使用するにはどうすればよいですか?

私はコンボボックスを持っています(私のwpf-mvvmアプリに)。設定しIsEditable = trueました。しかし、入力を開始すると「プロパティ変更イベント」が発生します。

ここで設定するにはどうすればよいUpdateSourceTrigger = Propertychangedですか?

また、ユーザーが新しい値を入力した場合は、検証関数を呼び出す必要があります(つまり、編集機能を使用してリストで使用可能な値以外を意味します)。

どんな助けでもありがたいです。

0 投票する
1 に答える
1059 参照

silverlight - Silverlight の Datacontext の UpdateSourceTrigger

こんにちは、MVVM Silverlight アプリに取り組んでおり、TextBox の UpdateSourceTrigger プロパティを使用して、実行時にバインディング式を次のように更新します。

.xaml.cs:

BindingExpression beID = txtEmpID.GetBindingExpression(TextBox.TextProperty); beID.UpdateSource();

BindingExpression beAge = txtAge.GetBindingExpression(TextBox.TextProperty); beAge.UpdateSource();

.xaml:

この場合、テキスト ボックスごとに手動でバインディング式を実行しています。単一のインスタンスで、グリッド内のすべてのテキスト ボックス コントロールに対してこのバインディング式を実行できる方法はありますか。

0 投票する
1 に答える
164 参照

wpf - データのロード時に計算されたバインドされたテキストボックスでUpdateSourceを防ぐにはどうすればよいですか?

ユーザーが3つのテキストボックスに数値を入力すると、4番目のテキストボックスで平均が計算されます。CalculateAverageメソッドは、最初の3つのテキストボックスのTextChangedイベントから呼び出されます。すべてのテキストボックスがバインドされます。(注:計算値をデータベースに保存するべきではないことはわかっていますが、これを変更することはできません。)WPF4とEntityFramework4を使用しています。

私の問題は、平均的なテキストボックスに常にEntityState.Modifiedがあることです。これは、データのロードまたはレコードのナビゲートにより、TextChangedイベントがCalculateAverageを呼び出すためです。ユーザーが変更を加えておらず、CurrentValue(平均)がOriginalValueと一致している場合でも、バインディングメカニズムはこのレコードを「ダーティ」と見なします。

私が実装したものよりもクリーンなソリューションがあるかどうか疑問に思います。私の修正は、データのロード中およびレコードのナビゲーション中にフラグを設定することです。これは、_changingRecordsフラグを設定するためにOnRecordChangingイベントを追加し、設定を解除するためにOnRecordChangedイベントを追加する必要があることを意味します。CalculateAverageの開始時に、if (_loadingData || _changingRecords) return;CalculateAverageを回避し、平均フィールドが更新されないようにする必要があります。

この問題を回避するためのよりクリーンなアプローチはありますか?

0 投票する
1 に答える
1521 参照

c# - Silverlight DataGrid の DataTemplate と明示的な UpdateSourceTrigger

ユーザーが [OK] ボタンをクリックすると、DataGrid の DataTemplate の Textbox が明示的に更新されるようにします。次の XAML コードがあります。

UpdateSourceTrigger を Explicit に設定しました。TextBox 項目にアクセスして UpdateSource() を呼び出すにはどうすればよいですか?

0 投票する
1 に答える
2548 参照

silverlight - UpdateSourceTrigger PropertyChanged in Silverlight?

入力した内容に応じてViewCollectionをフィルタリングするために、好きなテキストボックスにすぐに入力すると、ほとんどの人がこれに遭遇したと思います。

WPFでは非常に簡単で、テキストバインディングのUpdateSourceTriggerをPropertyChangedに変更するだけです。

ご想像のとおり、Silverlightにはありません。代わりに、デフォルトと明示的なものがあります。

代わりに、インタラクション動作をテキストボックスのTextChangedイベントにバインドするというアイデアがありました。このアプローチをお勧めしますか、それとももっと良い方法がありますか?

0 投票する
2 に答える
2174 参照

wpf - TextBox UpdateSourceTrigger = PropertyChanged - 本当にパフォーマンスに影響しますか?

MSDN のドキュメントには次のように記載されています。

TwoWay または OneWayToSource であるバインディングは、ターゲット プロパティの変更をリッスンし、それらをソースに伝達します。これは、ソースの更新として知られています。通常、これらの更新は、ターゲット プロパティが変更されるたびに発生します。これは、チェック ボックスやその他の単純なコントロールでは問題ありませんが、通常、テキスト フィールドには適していません。キーストロークのたびに更新すると、パフォーマンスが低下する可能性があり、ユーザーが新しい値にコミットする前にバックスペースして入力エラーを修正する通常の機会が失われます。したがって、Text プロパティの既定の UpdateSourceTrigger 値は LostFocus であり、PropertyChanged ではありません。

更新がデータベースまたはネットワーク経由で直接行われる状況、またはデータが非常に大量の場合、TextBox で UpdateSourceTrigger = PropertyChanged を使用すると実際にパフォーマンスが低下する可能性があることを理解しています。

しかし、単純な DependencyProperty、または Entity Framework オブジェクトのプロパティを (コミットする前に) 更新するだけの場合、パフォーマンスへの影響は無視できないでしょうか?

編集中のオブジェクトの状態を追跡し、変更が行われたかどうかに応じて [保存] ボタンの外観を最適化する WPF アプリを作成しているため、不思議に思っています。変更を判断する最も簡単な方法は、関連する SourceUpdated の発生を適切にキャッチすることだと思いました。テキストボックスの UpdateSourceTrigger = PropertyChanged の場合に最適に機能します。これは、ユーザーが「保存可能な」変更があるという即座のフィードバックを受け取るためです。