問題タブ [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.
wpf - データバインディングの計算値を持つ TextBlock が更新されない
JobItem クラスの「AdminTime」という double プロパティにバインドするテキストブロックがあります。AdminTime は、TimeLog という observablecollection にある管理時間の合計を計算します。テキストボックスを使用して、これらの管理時間を JobItem クラスに追加します。縮小されたコードは次のとおりです。
コード ビハインドには、addTime ボタン クリック ハンドラがあります。私の UpdateSourceTrigger は既に明示的であり、ソースを更新すべきではないことを理解していることに注意してください。ただし、それが私の問題に役立つかどうかを確認しただけです。
私の JobItem クラスには、次のコードがあります。
ウィンドウを終了して再度開くと、テキストブロックがバインドされます。addAdBtnをクリックすると、テキストブロックが更新されます。管理時間のテキストブロックとボタンを表示するためにダイアログを開いて時間を追加し、ダイアログを閉じて、更新されたテキストブロックを表示するためにもう一度開く必要はありません。
wpf - LostFocusのソースを更新するDependencyPropertyをUserControlに実装するにはどうすればよいですか?
私はUserControl
、単一TextBox
のカスタムロジックを含み、PhoneNoというDependencyPropertyを持つ呼び出されたPhoneBoxを実装しようとしていました。LostFocus
これは、 forを使用した双方向バインディングシナリオで使用される予定でしたUpdateSourceTrigger
。だから私は次のコードを書きました-
XAML(UserControl):
コードビハインド(UserControl):
XAML(コンシューマー):
できます。しかし、私の質問は、txtPhone_LostFocus
イベントハンドラーを使用してプロパティ値を設定する(そしてソースを更新する)方法は適切ですか?これを行うためのより適切な方法はありますか?私はこのDependencyProperty
ことの初心者なので、ガイド、提案、コメントはありがたいことに感謝します。
.net - WPFコンバーターのMultipleBinding...ConvertBackはいつ呼び出されますか?
値のセットを持つComboBoxがあります。選択された値は、複数の双方向バインディングを備えたコンバーターによって決定されます。ユーザーがComboBoxの値を変更すると、ConvertBackメソッドが呼び出され、Multiple Bindingで使用される2つのプロパティの値が変更されると期待していましたが、ComboBoxがフォーカスを失っても、これは発生しません。UpdateSourceTriggerプロパティを「LosesFocus」に変更しようとしましたが、これはMultipleBindingでは明らかに無効です。値が変更されたとき、またはコントロールがフォーカスを失ったときに、ConvertBackメソッドを起動するにはどうすればよいですか?どちらも私の目的のために動作します。
XAML:
c# - バインド方法の異なる UpdateSourceTriggers
1 つの特別な動作を実装する方法がわかりません。2 つの列を含むデータグリッドのビューがあります。1 つの列には、書式設定された価格 ("00.00") が表示されます。バインディングが更新される (プロパティが設定される) と、価格は自動的に保存されます。UpdateSourceTrigger=PropertyChanged を使用すると、価格は常に正確になります。このトリガーの欠点は、ユーザーがテキストボックス内のすべてのテキストを選択して「1」とだけ入力すると、価格が「01.00」にフォーマットされることです。価格を自動的にフォーマットしたくありません。その書式設定は、フォーカスが他のオブジェクトに移動したときにのみ表示されます。
理論的には、2 つの異なる UpdateSourceTrigger を設定する必要があります。バックエンドを更新するためのもの (ユーザーがテキスト ボックスに何かを入力します)。もう 1 つはターゲットを更新するためのものです (フォーカスが別のオブジェクトに移動しました)。さらに、新しい値が無効な場合は、すぐに表示する必要があります。
編集: 小さな例を挙げます: バインドされた Price プロパティを "1" に設定すると、自動的に "01.00" にフォーマットされます。UpdateSourceTrigger=PropertyChanged を使用すると、TextBox に「01.00」が表示されます。TextBox がフォーカスされている限り、TextBox に「1」が表示されるようにします。もちろん、UpdateSourceTrigger=LostFocus を使用すると、その動作が得られます。ここでの問題は、DataGrid が TabControll に含まれており、両方のコントロールがうまく連動しないことです。フォーカスがまだ TextBox にあるときに別のタブを選択すると、TextBox によってスローされる LostFocus はありません。
あなたの何人かが私にアドバイスをしてくれることを願っています:-)
アンドレ
wpf - ソースごとに UpdateSourceTriggers が異なりますか?
Text プロパティがデータ ソースにバインドされた WPF TextBox があります。また、最初のボックスに何も入力されていないときに 2 番目のボックスを無効にするために、2 番目の TextBox の IsEnabled プロパティを最初の Text.Length プロパティにバインドしています。問題は、プロパティが変更されたときにテキスト ソースを更新することですが、IsEnabled はフォーカスが失われたときにのみ更新する必要がありますが、テキストに対して適切に定義できる UpdateSourceTrigger は 1 つだけです。
これを回避する 1 つの方法は、前のテキスト ボックスのフォーカスが失われたイベントでテキスト ボックスを手動で有効または無効にすることです。ただし、これらのテキスト ボックスが多数あり、それぞれの IsEnabled が前のボックスの Text プロパティにバインドされているため、これは面倒です。Xamlでこれを行うためのよりクリーンな方法があるかどうか疑問に思っていました。
ここでは、box1 がフォーカスを失ったときに box2 の IsEnabled プロパティを更新し、box1 の Text プロパティが変更されたときに textSource1 を更新します。
c# - ConvertBackがItemsControlに対して呼び出されたとき?
次のアイテムデータクラスとコンバーターがあります。
ListBoxData
のインスタンスをリストボックスコントロールのにバインドしますItemsSource
。以下のように:
だから私の質問は、Convert
リストボックスが表示されているときに関数が呼び出されるということですが、このリストボックスのすべての項目はチェックボックスであるため、TwoWay
バインディングを使用してインスタンスとリストボックスをバインドしますがConvertBack
、のチェックボックスをオン/オフにすると呼び出されませんこのリストボックス。
ConvertBack
期待どおりに動作するように設計されているかどうかはわかりません。ConvertBack
しかし、チェックステータスが変更されたときにをトリガーできるようにしたい場合はどうすればよいですか?
silverlight - Silverlight コントロールがバインドされたプロパティを更新してはならない場合に更新する
datagrid にカスタム コントロールがありますDataGridTemplateColumn.CellEditingTemplate
。
SelectedObject
コントロール内には、依存関係プロパティを更新する場所が 1 つだけあります。
このコードは、LostFocus
イベントで呼び出されます。
問題は:メソッドが 1 回だけ呼び出されている間UpdateSource
(デバッガーでチェック) SelectedItem
、更新された値 (同じ) を 2 回取得することです! こんなはずではないので、現在途方に暮れています。何か不足していますか?
編集: MVVM フレームワークは使用していません。VS2012 デバッグ コールスタックは、最初の更新が UpdateSource() 呼び出しによって開始されることを示していますが、2 番目はどこからともなく出てきます。
wpf - updatesourcetrigger = propertychangedと組み合わせて2倍にするWpfテキストボックスコンバーター
私たちのプロジェクトには、double にバインドされた WPF テキストボックスがあります。たとえば、convertback で両方の "." を使用できるようにするコンバーターがあります。および "," を小数点として変換し、convert メソッドで double を n2 数値形式にフォーマットします。ここでは、コンバーターの単純化されたバージョンを確認できます。
テキストボックスは次のようになります。
また、double プロパティは propertychanged イベントを発生させます。
以前のバージョンの WPF では、テキストを入力するときに変換が呼び出されなかったため、これは正常に機能していました。この動作は明らかに変更され、すべてのテキスト エントリで convert メソッドが呼び出されるようになり、何かを入力すると double がフォーマットされます。フォーマットを使用しない場合でも、小数点を入力できないという問題があります。
これは UpdateSourceTrigger=Propertychanged を使用しないことで解決できますが、検証にはこれが必要です。IDataErrorInterface を使用して検証を実装します。ValidateWithoutUpdate メソッドがあることは知っていますが、これは IDataErrorInterface を使用した検証では機能しません。
したがって、私が基本的に必要としているのは、OnPropertyChanged が発生する ConvertBack (したがって検証) と、OnLostFocus のみが発生する ConvertBack です。
これは可能ですか?または、私たちの問題に対する別の解決策はありますか?
wpf - WPF コンボ ボックス更新元トリガー
コンボボックスのトリガーを追加しました。
コンボ ボックスが「無効」の場合、「テキスト」プロパティを「1」に設定し、変更されたプロパティに updatesourcetrigger を追加する必要があります。
コンボ ボックスが「有効」の場合、「テキスト」プロパティを選択し、変更されたプロパティに更新元トリガーを追加する必要があります。
しかし問題は、コンボ ボックスが無効で、'Text' プロパティが '1' に設定されている場合、更新元トリガーを呼び出すことができないことです。
以下は、XAML コード スニペットです。
上記の XAML コードから、コンボ ボックスの 'Disabeld' モードで 'Text' プロパティを '1' に更新したとき、この '1' 値をソース プロパティ、つまり 'Tag' に更新し、そこから 'NoOfIntervals' に更新する必要がありますが、そうではありません。起こっていません。
ありがとう、ナグ