従来の {Binding} 構文を使用する場合、要素名を指定してページ上の特定のコントロールを指すことができ、そのプロパティにアクセスできます。たとえば、ページに名前が付けられている場合、次のpage
ことができます。
{Binding ElementName=Page, Path=Name}
{x:Bind}構文では、
x:Bind では、バインディング式の一部として ElementName=xxx を使用する必要はありません。x:Bind を使用すると、要素の名前をバインディングのパスの最初の部分として使用できます。これは、名前付き要素がルート バインディング ソースを表すページまたはユーザー コントロール内のフィールドになるためです。
したがって、上記の例の {x:Bind} は次のようになります。
{x:Bind page.Name}
これは、データ テンプレート (ListView の ItemTemplate など) 内に収まるまでは正常に機能します。その場合、指定されたデータ型を探しているため機能しなくなりPage
、次のエラーが発生します (データ型が であると仮定しますcustomer
):
XamlCompiler エラー WMC1110: 無効なバインディング パス 'Page.Name': プロパティ 'Page' が型 'Customer' で見つかりません
データ テンプレートで {x:Bind} 構文を使用し、データ テンプレート外のアクセス コントロールを使用するソリューションは何ですか?
サンプルコードはこちらから入手できます(特定のコミットに注意してください)