問題タブ [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.
c# - WPF で XamlParseException/TargetInvocationException を与える Binding.UpdateSourceTrigger
次のようにトリガーを適用しようとしています。
そして、私の XAML コードは次のとおりです。
例外の原因は何ですか?
wpf - VisualTreeHelper.GetChild() を反復処理し、データバインディングを含むコントロールで UpdateSource を呼び出します
TextBoxes や ComboBoxes などのいくつかの入力コントロールを含む WPF に ContentControl があります。これらの各コントロールは、ViewModel の特定のプロパティにデータバインドされていUpdateSourceTrigger=Explicit
ます。
FormularioPaciente
「送信」ボタンをクリックすると、バインディングを持つすべての子をトラバースし、次のように呼び出しUpdateSource
ます。
wpf - TextBox UpdateSourceTrigger と PropertyChanged の使用に関する問題
ゴール
btnRefresh
テキストボックスに何かがあるときにボタンを有効にしたいtbMachineNo
(MVVM標準を使用)。
プロジェクトの概要
私は持っています:
Window.xaml
InspectionViewModel.vb
これにはプロパティがInspectionModel
あり、いくつかのメソッドが含まれています。1つは、コンストラクター中に ICommand が実行されることです(これが、CanUpdate
メソッドのためにテキストボックスを無効/有効にするものです)
これは正常に機能し、コードは必要なときに実行されます。InpsectionModel を見てみましょう。
RefreshMachineNumberコマンド
InspectionModel.vb
このクラスは、 を実装する ObservableObject を継承しINotifyPropertyChanged
ます。したがって、理論的には、私のプロパティMachineNumber
が Inspection オブジェクトMachine
で変更されるたびに、UpdateSourceTrigger=PropertyChanged
問題
テキストボックスに文字が入力されたとき、またはテキストボックスが空になったときに、ボタンコントロールを有効/無効にする方法を理解していません。私のCanUpdate
ICommand は、現在これを制御しているものであり、コンストラクターがロードされたときに 1 回だけ実行されます。
これは理にかなっていますが、コードの背後に置かずにこの Textchanged の問題を機能させる方法がわかりません。MVVMでできるようにしたい
Textbox を別のフィールドにバインドしましたが、そのフィールドは Inspection オブジェクトの同じ属性にバインドされていました。テキストボックスに入力したときに他のフィールドが変更されているのを見ることができました...したがって、UpdateSourceTriggerは機能していますが、テキストを入力するとボタンを有効にすることができません。
xaml - 要素 'Binding' の不明なメンバー 'UpdateSourceTrigger'
現在、Windows 8 アプリ - プロジェクトとして C++/CX と XAML を試しています。うまくいっているように見えますが、今このエラーに出くわしました: 要素 'Binding' の 'Unknown member 'error WMC0011 UpdateSourceTrigger' .
次のように、キーストロークごとにソースを更新するために、「PropertyChanged」という値を持つ TextBox で UpdateSourceTrigger を使用しようとしています。
キーストロークごとにソースを更新する方法を知っている人はいますか?
前もって感謝します!
wpf - コンテナーを閉じるときに XAML Datagrid がバインドを更新しない
WinFormsフォーム内にデータグリッドを持つWPFユーザーコントロールがあります。データグリッドは、ItemsSource バインディングを使用してデータソースにバインドされます。すべて正常に機能するため、データが変更されると、変更がオブジェクト モデルに反映されます。
ただし、ユーザーがデータグリッドでデータを編集しているときにホスティング コンテナーの [閉じる] ボタンをクリックすると、データグリッドはバインドを更新しません。おそらく、フォーカスが失われたとは考えていないためです。フォームが閉じ、変更が失われます。
同じ問題がテキスト ボックスにも当てはまりますが、UpdateSourceTrigger=PropertyChanged を使用して、テキストが変更されるたびに基になるモデルが常に更新されるようにすることで回避できます。理想的ではありませんが、問題は回避されます。
ソースを更新するためにデータグリッドを PropertyChanged モードに切り替える方法、または基になるオブジェクトへのバインディングを介してデータグリッドに変更を強制的に保存する方法を知っている人はいますか?
これを調査しているときに、この記事が役立つことがわかりました: http://www.jerryhuang.net/post/Force-a-data-binding-to-update.aspx
ありがとう
.net - Silverlight のすべての TextBox の UpdateSourceTrigegr の既定値を変更する
カスタム TextBox (TextBox を継承) があり、TextProperty の Binding の UpdateSourceTrigger 値を Explicit に変更したいと考えています。Silverlight には、Default、Explicit、PropertyChanged の 3 つの値しかありません。
コントロールのコード内からそれを行う一般的な方法はありますか?
c# - 1 つのコントロールに対する複数の UpdateSourceTriggers
単純な問題です。たとえば、この TextBox があるとします (実際のところ、これはあります)。
Text プロパティが変更されるたびに、MySourceProperty が正常に更新されます。それに加えて、TextBox がフォーカスされたときにも MySourceProperty が更新されるようにする必要があります。
1 つのコントロールに対して 2 つの UpdateSourceTriggers を持つ方法はありますか?
詳細については、MySourceProperty にバインドされたラベルを含む親ビューと、TextBox と ComboBox を含む別のビューがあります。
したがって、次のいずれかのイベントが発生したときに MySourceProperty を更新する必要があります。
- TextBox.Text の変更
- ComboBox.SelectedItem の変更
- TextBox にフォーカスする
- ComboBox にフォーカスする
最後の 2 つのイベントは明らかにここにあります。コントロールにフォーカスを与えても、その Text または SelectedItem プロパティは変更されず、MySourceProperty も更新されないためです。
編集:私が欲しいものを明確にするために、質問を太字にしました。コード ビハインドでイベント ハンドラーを使用することで問題を解決できましたが、WinForms の習慣をなくそうとしているところです。しかし、それが唯一の解決策である場合は、遠慮なく答えてください。
wpf - ボタンがクリックされてコマンドが実行されると、Wpf 更新ソース トリガーが複数のテキスト ボックスで明示的にトリガーされます。MVVM シナリオでは
このような状況があります。オブジェクトをダブルクリックしてフォームで開き、それを変更できるブラウズがあります (舞台裏で、あるビューモデルから別のビューモデルにそのオブジェクトを渡しています)。その後、フィールドを変更できますが、テキストブロックはすぐに変更を行うため、[変更を保存] を押す前にフィールドが変更されていることがわかります。さらに悪いことに、[キャンセル] を押すと、変更がブラウズに残ります。すべてのテキストボックスを明示的に UpdateSourceTrigger にする必要があることはわかっていますが、MVVM の方法で簡単な例を見つけることができないため、保存ボタンがクリックされ、それに関連付けられたコマンドが実行されたときにのみ更新し、すべての明示的な更新を強制する必要があります。テキストボックス。どうすればそれを達成できますか?
ありがとう :)
c# - WPF: UpdateSourceTrigger == Explicit にしても、バインディングを設定するとソース値が変更される
私は単純なものを持っていますWindow
SimpleDependencyProperty
という名前のカスタム
問題は、アプリケーションの起動時にバインディングが初めて設定されるときに、ソース ( SimpleUpdateSource
プロパティの値) が呼び出されなくても更新されMessageBox
、次のメッセージが表示されることです: Simple changed from "initial" to " " .
どうすればそのような行動を取り除くことができますか?