Looking for wpf Answers? Try Ask4KnowledgeBase
Looking for wpf Keywords? Try Ask4Keywords

wpfWPFデータバインディングの概要


構文

  • {Binding PropertyName} {Binding Path = PropertyName}に相当します
  • {バインディングパス= SomeProperty.SomeOtherProperty.YetAnotherProperty}
  • {バインディングパス= SomeListProperty [1]}

パラメーター

パラメータ詳細
パスバインドするパスを指定します。指定されていない場合は、DataContext自体にバインドされます。
UpdateSourceTrigger バインド元の値が更新される時期を指定します。デフォルトはLostFocusです。最もよく使用される値はPropertyChangedです。
モード通常OneWayまたはTwoWay 。バインディングによって指定されていない場合は、バインディングターゲットがTwoWayことを要求しない限り、デフォルトでOneWayになりTwoWayTwoWayを使用して読み取り専用プロパティにバインドするときにエラーが発生します。たとえば、読み取り専用文字列プロパティをTextBox.TextにバインドするときにOneWay明示的に設定する必要があります。
ソース現在のDataContextの代わりにStaticResourceをバインディングソースとして使用できるようにします。
RelativeSource 現在のDataContextではなく、バインディングソースとして別のXAML要素を使用できます。
ElementName 現在のDataContextの代わりに名前付きXAML要素をバインディングソースとして使用できるようにします。
FallbackValue バインディングが失敗した場合、この値はバインディングターゲットに提供されます。
TargetNullValue バインディング・ソース値がnull場合、この値はバインディング・ターゲットに提供されます。
コンバータバインディングの値を変換するために使用するコンバータStaticResourceを指定します。たとえば、ブール値をVisibility列挙型アイテムに変換します。
ConverterParameter コンバータに提供されるオプションのパラメータを指定します。この値は静的でなければならず、バインドすることはできません。
StringFormat バインドされた値を表示するときに使用する書式文字列を指定します。
ディレイ (WPF 4.5+)バインディングがViewModel内のBindingSourceを更新する遅延をmillisecondsで指定しmilliseconds 。これをMode=TwoWayにするには、 Mode=TwoWayおよびUpdateSourceTrigger=PropertyChangedを使用する必要があります。

備考

UpdateSourceTrigger

既定では、WPFはコントロールがフォーカスを失ったときにバインディングソースを更新します。ただし、フォーカスを取得できるコントロールが1つしかない場合(例でよく見られるようなもの)、アップデートを動作させるにはUpdateSourceTrigger=PropertyChangedを指定する必要があります。

すべてのキーストロークでバインディングソースを更新するのはコストがかかり、ライブデータの検証が望ましくない場合を除き、多くの双方向バインディングでPropertyChangedをトリガーとして使用したい場合があります。

LostFocusを使用すると残念なことに副作用があります:Enterを押してIsDefaultマークされたボタンを使用してフォームを送信しても、バインディングをバックアップするプロパティは更新されず、変更を効果的に元に戻します。幸いにも、 いくつかの回避策が存在します。

また、UWPとは異なり、WPF(4.5以降)にはバインディングにDelayプロパティがあり、一部のTextBox検証のように、ローカルのみまたは単純なマイナーインテリジェンス設定を持つバインディングには十分であることに注意してください。

WPFデータバインディングの概要 関連する例