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 bir 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 biçimlendirme uzantıları ve Tür Dönüştürücüleri ve İşaretlemeyi Uzantıları için Kullanılabilir Hizmet Bağlamları.

Özellikle işaretleme uzantıları için yararlı olan bir senaryo IProvideValueTarget , işaretleme uzantınızın durumsal kullanımının geçerliliğini belirlemektir. Ö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 kullanabiliyorsa uygun olabilir. olarak TargetObject döndürülen nesnenin tür sistemi özelliklerini denetleyebilirsiniz 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 seçilecek 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 ValueSerializeriçin TypeConverter de yararlı olabilir. Belirli TypeConverter bir hedef türüne veya ValueSerializer hedef özelliğine ayrılmış olduğundan veya genellikle işaretleme uzantısından daha fazla bağlama sahiptir ve bu nedenle durumsal geçerlilik genellikle tür sisteminde tahmin edilebilirdir. Ancak başka senaryolar da vardır. 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ır:

  • 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 ayarlanmamış 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 .

Senaryolardan biri, 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 döndürülen hizmetin kendisi olmadığından 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. Özellikle WPF için bu değişiklikler WPF özellik sistemini geçersiz kılabilir beklenmeyen değişikliklere neden olabilir.

Not

Biçimlendirme uzantısının veya tür dönüştürücüsünün TargetProperty hangi kesin tür döndürmesi gerektiğini 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 önceki sürümlerinde, bu arabirim WPF'ye özgü WindowsBase derlemesinde mevcut oldu. .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üsundan döndürülecek değerin bağlama bağlı olduğu durumlar için nesneleri ve özellikleri döndürebilir.

IProvideValueTarget , WPF'deki bağımlılık özellikleri için bağlama mekanizmasını uygulayan sınıfın iç uygulamasında BindingBaseyoğun bir şekilde kullanılır.

WPF için varsayılan 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 uygulanır 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ürümünüzün uygulanmasına bağlı olmasına rağmen işlem yapamayacağı anlamına gelmez. Hizmet kullanılabilir olsa bile değerlerinin IProvideValueTarget null olduğu örnek bir durum, işaretleme uzantınız gibi başka bir Bindingişaretleme uzantısı içinde iç içe yerleştirilmişse olur. Yalnızca belirli bir özel durum oluşturma amacıyla , hedeflenen tasarımınız buysa, üzerine dayalı IProvideValueTarget bir uygulama her zaman null değerleri denetlemelidir.

Özellikler

TargetObject

Bildirilen hedef nesneyi alır.

TargetProperty

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

Şunlara uygulanır

Ayrıca bkz.