IProvideValueTarget Arabirim

Tanım

İşaretleme uzantısı değerlendirmesi için durumsal nesne-özellik ilişkilerini bildiren bir hizmeti temsil eder.

public interface class IProvideValueTarget
public interface IProvideValueTarget
type IProvideValueTarget = interface
Public Interface IProvideValueTarget

Açıklamalar

IProvideValueTarget , bir değer dönüştürücüsünü çağırdığı çevresindeki nesne-özellik yapısıyla ilgili bilgileri bildiren bir hizmeti temsil eder.

Tür dönüştürücüleri ve işaretleme uzantıları, XAML nesne yazıcısı değer dönüştürme davranışını çağırdığında, XAML nesne yazıcısı tarafından sağlanan hizmet bağlamında hizmet olarak sorgulayabilir IProvideValueTarget . Daha fazla bilgi için bkz . XAML için Tür Dönüştürücüleri ve İşaretleme Uzantıları ve Tür Dönüştürücüleri ve İşaretleme Uzantıları için Kullanılabilir Hizmet Bağlamları.

Özellikle işaretleme uzantıları için, işaretleme uzantınızın durumsal kullanımının geçerliliğini belirlemek yararlı olan bir senaryodur IProvideValueTarget . Örneğin, işaretleme uzantınız bir değer erteleme mekanizması uygulayabilir, ancak bu mekanizmayı kullanmak yalnızca hedef nesne çalışma zamanında erteleme mekanizmanızın diğer bileşenlerini kullanabilecekse uygun olabilir. Olarak TargetObject döndürülen nesnenin tür sistemi özelliklerini denetleyebilir ve nesnenin erteleme tekniğinizi desteklediğinden emin olun. Bu durumda, işaretleme uzantınız bir değer döndürür ve döndürülmezse, işaretleme uzantınız bir XAML nesne yazıcısı tarafından iç özel durum olarak toplanacak bir özel durum oluşturur. Benzer bir senaryo, belirli bir özelliğin türünün sistem özelliklerini denetleyerek bir özelliği desteklediğini garanti etmektir TargetProperty.

API adı IProvideValueTarget ile MarkupExtension.ProvideValuebir ilişkilendirme anlamına gelse de, tarafından IProvideValueTarget bildirilen bilgiler veya TypeConverterValueSerializeriçin de yararlı olabilir. Belirli TypeConverter bir hedef türüne veya ValueSerializer hedef özelliğine ayrılmış olduğundan veya genellikle bir işaretleme uzantısından daha fazla bağlama sahiptir ve bu nedenle durumsal geçerlilik genellikle tür sisteminde tahmin edilebilir. Ancak başka senaryolar da mevcuttur. Aşağıda, tür dönüştürücüsü veya işaretleme uzantısı tarafından uygulanabilecek bazı senaryoların listesi yer alıyor:

  • Bu nesnedeki diğer özelliklerin örnek değerlerini okumak için alın TargetObject . Hedef nesnedeki XAML üyelerinin işleme sırası belirsiz olabileceğinden, buradaki işlemenizin ayarsız değerler için sağlam olması gerekebileceğini unutmayın.

  • Tür düzeyinde meta verileri okumaya veya gerekli arabirimlerin türe göre uygulandığını doğrulamaya başlayın TargetObject .

  • Özellik meta verilerini okumaya başlayın TargetProperty .

Bir senaryo, işaretleme uzantınız tarafından ayarlanmasına izin verilen nesneleri veya özellikleri sınırlamak için bilgileri kullanmaktır IProvideValueTarget .

Hizmeti kullanmayı denemeden önce, bağlam için kullandığınız ilgili hizmet sağlayıcısı parametresi tarafından hizmetin döndürülmediğinden null emin olun.

Önemli

Hizmeti kullanırken, özelliği tarafından başvuruda bulunan nesneyi veya bu nesne tarafından TargetObject başvuruda bulunan diğer nesneleri değiştirmemek özellikle önemlidir. WPF için özellikle, bu değişiklikler WPF özellik sistemini geçersiz kılabilir beklenmeyen değişikliklere neden olabilir.

Uyarı

Biçimlendirme uzantısının veya tür dönüştürücüsünün TargetProperty döndüreceği kesin türü belirlemek için türünü kullanmayın. Bu iyi bir uygulama değil. Dönüş türünüz, attributing (MarkupExtensionReturnTypeAttribute işaretleme uzantıları için) veya desenlerle (tür dönüştürücüsü sınıf adı) tutarlı olmalıdır.

.NET Framework'ün önceki sürümlerinde, bu arabirim WPF'ye özgü WindowsBase derlemesinde mevcutdu. .NET Framework 4'te System.Xaml IProvideValueTarget derlemesindedir. Daha fazla bilgi için bkz . WPF'den System.Xaml'e Geçirilen Türler.

WPF Kullanım Notları

Bu hizmet, bağımlılık özelliğine bağlama gibi çerçeve özelliklerini destekler.

WPF'de, tarafından IProvideValueTarget temsil edilen hizmet, işaretleme uzantısından veya tür dönüştürücüsnden döndürülecek değerin bağlama bağlı olduğu durumların nesnelerini ve özelliklerini döndürebilir.

IProvideValueTarget , WPF'de bağımlılık özellikleri için bağlama mekanizmasını uygulayan sınıfın BindingBaseiç uygulamasında büyük ölçüde yararlanılır.

WPF için varsayılan bir iç hizmet sağlayıcısı, özel bir işaretleme uzantısı veya tür dönüştürücüsü tarafından kullanım için uygular IProvideValueTarget . tarafından IProvideValueTarget bildirilen nesne ve özellik yalnızca iç WPF hizmeti tarafından ayarlanabilir. Nasıl çalıştığıyla ilgili IProvideValueTarget bu tanımın ötesinde, en azından IProvideValueTarget ve IXamlTypeResolver hizmetlerini uygulayan işaretleme uzantısı ve tür dönüştürücü kullanımları için kendi hizmet sağlayıcınızı tanımlamanız gerekir ve bu, burada açıklanmayan gelişmiş bir senaryodur.

veya TargetObject için TargetProperty null değer, bir işaretleme uzantısının veya tür dönüştürücüsünüzün işlem yapamayacağı anlamına gelmez, ancak bu sizin uygulamanıza bağlıdır. İşaretlemeyi uzantınız gibi başka bir işaretleme uzantısı içinde iç içe yerleştirilmişse, hizmet kullanılabilir olsa bile içindeki değerlerin IProvideValueTarget null olması örnek bir Bindingdurumdur. Bağlı olan IProvideValueTarget bir uygulama, yalnızca belirli bir özel durum oluşturma amacıyla , hedeflenen tasarımınız buysa, her zaman null değerler olup olmadığını denetlemelidir.

Özellikler

Name Description
TargetObject

Bildirilen hedef nesneyi alır.

TargetProperty

Bildirilen hedef özelliğin tanımlayıcısını alır.

Şunlara uygulanır

Ayrıca bkz.