2015-09-29 19 views
6

Geleneksel {Binding} sözdizimini kullanırken, sayfada belirli bir denetimi işaret edecek öğe adını belirtebilir ve özelliklerine erişebilirsiniz. sayfa adlandırılır Örneğin page bunu yapabilirsiniz:X'te ElementName için alternatif: DataTemplates ile bağlama

{Binding ElementName=Page, Path=Name} 

{x:Bind} sözdizimi sayesinde x ile

diyor ki: Bağlama, sen elementName kullanmak gerekmez = xxx bir parçası olarak bağlanma ifadesi. X: Bind ile, öğesinin adını, bağlayıcı için adlandırılmış öğeler sayfadaki alanlar veya kullanıcı denetimi bağlantı kaynağını temsil eden kullanıcı denetimi olarak bağlamanın yolunun ilk kısmı olarak kullanabilirsiniz.

Yani yukarıdaki örneğin: bir veri şablonunun (örneğin bir ListView ıtemtemplate) içinde olduğu kadar {x Bind}, gayet iyi çalışıyor

{x:Bind page.Name} 

olurdu. aşağıdaki hataya yol açmaktadır Belirtilen veri türüne Page aradığı olarak Hangi durumda artık çalışıyor (customer benim veri türü olduğunu varsayarak):

XamlCompiler hata WMC1110: Geçersiz yol bağlama 'Page.Name ': Property ': veri şablonuna dışında DataTemplates ve erişim kontrolleri ile sözdizimi Sayfa Müşteri '

{Bind x} kullanmak çözüm nedir' türü üzerinde bulunamıyor'? onun yaptığı gibi bağlama yöntemini:

Örnek kod here doğrudan x kullanarak bir kontrol özelliğine bağlamak için bir yolu yoktur sürede bu noktada itibarıyla bildiğim kadarıyla

cevap

9

(özgül not taahhüt) kullanılabilir Tanımlama isminin içindeki eleman ismini desteklemez.

Bu, bir dataTemplate içindeki bir denetime bağlanamayacağınız anlamına gelmez; denetimlere erişmek için hala böyle bir şey yapabilirsiniz ancak derlenmiş cilt x: Bind sözdizimini kullanamazsınız.

<DataTemplate x:DataType="local:Customer"> 
    <StackPanel Orientation="Vertical"> 
     <Button Content="{Binding Name, ElementName=page}" /> 
     <TextBlock Text="{x:Bind Title}" /> 
    </StackPanel>   
</DataTemplate> 

Aldığınız hatanın nedeni, veri şablonlarının ana veri kaynaklarının yolundan kaynaklanmaktadır. X: Bind bağlaması, bir denetim nesnesine başvuruda bulunamaz ve Müşteri türünüzde, Page.Name özelliği veya yolu yoktur. Yukarıda gösterildiği gibi, yalnızca XAML kullanarak kontrolünüz dışındaki kullanıcı kontrol özelliklerine erişmenin tek gerçek yolu standart bağlama mekanizmasına geri başvurmaktır.

Umarım bu soruya cevap verir.