2016-05-23 7 views
21

UWPで使用するもの、Bindingまたはx:Bindとは何ですか?バインディングとxの違い:バインド

私は人々がBindingを使用し、UWPでx:Bindとバインドするだけのたくさんの投稿を見るためです。

MSDNホームページでは、「{x:Bind}{Binding}によって作成されたバインディングオブジェクトは、機能的に同等です」とのみ記載されています。そのx:Bindはである。

しかし、それらの違いは何ですか?

「機能的に同等」とは同等の意味ではないためです。私の引用から

リンク:MSDN

だから私の質問は次のとおりです。UWPでバインド:

バインディングまたはXを使用しての違いは何ですか?

+2

おそらく、最も大きな違いは([{x:Bind}マークアップ拡張機能](https://msdn.microsoft.com/en-us/windows/uwp/xaml-platform/x-bind- * "コンパイルされたバインディングは強く型付けされ、パスの各ステップの型を解決します。返される型にメンバーがない場合、**コンパイル時に失敗します**" – IInspectable

答えて

27

次はおそらく完全ではありませんが、大きな違いのいくつかは、およそ柔軟{Binding }

  • はDataContextの
  • に結合する

    • 旧スタイルプロパティ名に結合し、あります実際のソースタイプ


  • 新しいスタイルが{x:Bind }
    • すべてのタイプはコンパイル時に固定
    • ニーズ(コードビハインドクラス)フレームワークエレメントに結合するより質素なワンタイムモード
    • から
    • デフォルト

そしてstarting with build 14393{x:Bind }サポート:

  • を直接BooleanToVisibility新しい{X:バインド}
  • 辞書インデクサ

を鋳造

  • 結合結合、
  • ValueConverter
  • ことなく拡張機能であります実行時には少し速くなりますが、重要な点として、誤ったバインディングに対してコンパイラエラーが発生します。 {バインディング}では、ほとんどの場合空のコントロールが表示されます。

    6

    {x:Bind}は、コンパイル時に生成する専用コードを実行します。 {Binding}は、汎用ランタイムオブジェクト検査を使用します。したがって、{x:Bind}は優れたパフォーマンスを持ち、バインディング式のコンパイル時検証を提供します。これは、ページの部分クラスとして生成されたコードファイルにブレークポイントを設定できるようにすることで、デバッグをサポートします。

    {x:Bind}は、その利点を得るために生成コードを使用するため、コンパイル時に型情報が必要です。これは、事前にタイプを知らないプロパティにバインドできないことを意味します。このため、Object型のDataContextプロパティに{x:Bind}を使用することはできません。また、実行時にも変更される可能性があります。 の代わりに、{x:Bind}のマークアップ拡張子(Windows 10の場合)が新しく追加されました。 {x:Bind}には{Binding}の機能が欠けていますが、実行時間は少なく、メモリは{Binding}より少なく、より優れたデバッグをサポートしています。

    +2

    引用しているソースを追加してください。 –

    関連する問題