Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Denetim şablonundaki bir özelliğin değerini, şablonlu denetimde kullanıma sunulan başka bir özelliğin değerine bağlar. TemplateBinding yalnızca XAML'deki bir ControlTemplate tanımı içinde kullanılabilir.
XAML öznitelik kullanımı
<object propertyName="{TemplateBinding sourceProperty}" .../>
XAML öznitelik kullanımı (şablon veya stildeki Setter özelliği için)
<Setter Property="propertyName" Value="{TemplateBinding sourceProperty}" .../>
XAML değerleri
| Süre | Description |
|---|---|
| propertyName | Ayarlayıcı söz diziminde ayarlanan özelliğin adı. Bu bir bağımlılık özelliği olmalıdır. |
| kaynakÖzelliği | Şablonlanan tür üzerinde bulunan başka bir bağımlılık özelliğinin adı. |
Açıklamalar
TemplateBinding kullanmak, özel denetim yazarıysanız veya mevcut denetimler için bir denetim şablonunu değiştiriyorsanız denetim şablonunu tanımlamanın temel bir parçasıdır. Daha fazla bilgi için bkz. Denetim şablonları.
PropertyName ve targetProperty'nin aynı özellik adını kullanması oldukça yaygındır. Bu durumda, bir denetim kendisinde bir özellik tanımlayabilir ve özelliğini bileşen parçalarından birinin mevcut ve sezgisel olarak adlandırılmış özelliğine iletebilir. Örneğin, denetimin kendi Text özelliğini görüntülemek için kullanılan bir TextBlock'u kendi bileşimine ekleyen bir denetim, bu XAML'yi denetim şablonuna dahil edebilir:<TextBlock Text="{TemplateBinding Text}" .... />
Kaynak özellik ve hedef özelliği için değer olarak kullanılan türler eşleşmelidir.
TemplateBinding kullanırken dönüştürücü ekleme fırsatı yoktur. Değerler eşleştirilemediğinde XAML ayrıştırıldığında hata oluşur. Dönüştürücüye ihtiyacınız varsa, aşağıdaki gibi bir şablon bağlaması için ayrıntılı söz dizimini kullanabilirsiniz: {Binding RelativeSource={RelativeSource TemplatedParent}, Converter="..." ...}
XAML'de ControlTemplate tanımının dışında TemplateBinding kullanmaya çalışmak ayrıştırıcı hatasına neden olur.
Şablonlanmış üst değerin de başka bir bağlama olarak ertelendiği durumlar için TemplateBinding kullanabilirsiniz. TemplateBinding değerlendirmesi, gerekli çalışma zamanı bağlamalarının değerlerine sahip olana kadar bekleyebilir.
TemplateBinding her zaman tek yönlü bir bağlamadır. İlgili her iki özellik de bağımlılık özellikleri olmalıdır.
TemplateBinding bir işaretleme uzantısıdır. İşaretleme uzantıları, genellikle öznitelik değerlerinin literal değerler veya işleyici adlarından farklı olması gerektiğinde ve bu gereksinim sadece belirli türlere veya özelliklere tür dönüştürücüleri koymaktan daha genel bir durum olduğunda uygulanır. XAML'deki tüm işaretleme uzantıları, öznitelik söz diziminde "{" ve "}" karakterlerini kullanır. Bu, XAML işlemcisinin işaretleme uzantısının özniteliği işlemesi gerektiğini kabul ettiği kuraldır.
Not Windows Çalışma Zamanı XAML işlemci uygulamasında TemplateBinding için yedekleme sınıfı gösterimi yoktur. TemplateBinding yalnızca XAML işaretlemesinde kullanılmak üzere kullanılır. Kodun davranışını yeniden oluşturmanın kolay bir yolu yoktur.
ControlTemplate'da x:Bind
Uyarı
ControlTemplate'da x:Bind kullanmak için Windows 10, sürüm 1809 (SDK 17763) veya üzeri gerekir. Hedef sürümler hakkında daha fazla bilgi için bkz . Sürüm uyarlamalı kod.
Windows 10, sürüm 1809'dan başlayarak, ControlTemplate'daTemplateBinding'i kullandığınız her yerde x:Bind işaretleme uzantısını kullanabilirsiniz.
x:Bind kullanılırken ControlTemplate üzerinde TargetType özelliği gereklidir (isteğe bağlı değildir).
x:Bind desteğiyle hem İşlev bağlamalarını hem de iki yönlü bağlamaları bir ControlTemplate içinde kullanabilirsiniz.
Bu örnekte TextBlock.Text özelliği Button.Content.ToString olarak değerlendirilir. ControlTemplate üzerindeki TargetType, veri kaynağı gibi çalışır ve üst öğeye TemplateBinding ile aynı sonucu sağlar.
<ControlTemplate TargetType="Button">
<Grid>
<TextBlock Text="{x:Bind Content, Mode=OneWay}"/>
</Grid>
</ControlTemplate>
İlgili konular
Windows developer