Yapılandırılmış Belge Etiketleri (İçerik Denetimleri) ile Çalışma
Yapısal Belge Etiketleri (İçerik Kontrolleri) ile Çalışma
Yapılandırılmış belge etiketi (SDT), Word UI’da içerik denetimi olarak bilinir, belge içeriğinin bir parçasını yazılmış, kısıtlı düzenleme davranışıyla sarar – bir onay kutusu, bir tarih seçici, bir açılır liste veya düz- ya da zengin-metin yer tutucu. Aspose.Words FOSS için .NET bunları şunun aracılığıyla modeller Aspose.Words.Markup ad alanı, başında StructuredDocumentTag sınıf. Bu sayfa içerik denetimlerinin eklenmesini, her türün yapılandırılmasını, bunların bulunup kaldırılmasını ve özel XML verilerine bağlanmasını kapsar.
Yapısal Belge Etiketi Nesne Modeli
StructuredDocumentTag, aynı zamanda IMarkupNode, ITrackableNode ve IStructuredDocumentTag arayüzlerini uygulayan bir CompositeNode dir. SdtType, kontrolün hangi türde olduğunu belirler. Tag ve Title, yazarların Word içinde ayarladığı tanımlayıcı dizeleri tutar; Placeholder (bir BuildingBlock) ve PlaceholderName, kontrol boş olduğunda gösterilen istem metnini sağlar ve bu IsShowingPlaceholderText aracılığıyla raporlanır. LockContentControl, kontrolün silinmesini engeller ve LockContents, içeriğinin düzenlenmesini, birbirinden bağımsız olarak, engeller.
İçerik Kontrollerini Ekleme
DocumentBuilder.InsertStructuredDocumentTag(SdtType), imleçte yeni bir kontrol ekler, ancak sadece SdtType değerlerinin yedisine: PlainText, RichText, Checkbox, DropDownList, ComboBox, Picture ve Date. RepeatingSection ve RepeatingSectionItem bu şekilde bir metin imlecine eklenemez — bunun yerine tüm paragrafları veya tablo satırlarını sararlar. Word dosyalarında görünen ancak Word UI’da eklenebilir türler olarak bulunmayan kalan SdtType değerleri — None, Bibliography, Citation, Equation, BuildingBlockGallery, DocPartObj, Group ve EntityPicker — bu ekleme yöntemi tarafından desteklenmez.
Tür-Spesifik İçerik
Bir onay kutusu denetiminin durumu StructuredDocumentTag.Checked‘dır; SetCheckedSymbol() ve SetUncheckedSymbol() her durum için gösterilen glifleri ayarlar. Bir tarih denetimi değerini FullDate‘te saklar, DateDisplayFormat ve DateDisplayLocale nasıl görüntüleneceğini kontrol eder, DateStorageFormat (bir SdtDateStorageFormat) XML verisine bağlandığında nasıl depolanacağını kontrol eder ve CalendarType (bir SdtCalendarType) takvim sistemini seçer. Bir açılır liste veya birleşik kutu seçeneklerini ListItems aracılığıyla sunar, bu bir SdtListItemCollection SdtListItem (DisplayText, Value) ile SelectedValue‘e sahiptir. Düz metin denetiminin Multiline özelliği içinde satır sonlarına izin verir ya da engeller.
Görünüm ve Kilitleme
Appearance (SdtAppearance) denetimin Word içinde görsel olarak nasıl sınırlandırıldığını kontrol eder. Color vurgulama rengini ayarlar ve ContentsFont / EndCharacterFont içeriğine uygulanan yazı tipini ve son karakterini kontrol eder. LockContentControl ve LockContents bağımsız anahtarlardır — ilki denetimin kendisinin silinmesini engeller, ikincisi içindekilerin düzenlenmesini engeller.
İçerik Denetimlerini Bulma ve Kaldırma
Range.StructuredDocumentTags, o aralığa kapsamlı bir StructuredDocumentTagCollection döndürür; GetById(), GetByTag() ve GetByTitle() hedefli arama için Remove() ve RemoveAt() ile birlikte bulunur. Tek bir StructuredDocumentTag üzerinde, Remove() denetimi ve içeriğini birlikte siler, RemoveSelfOnly() yalnızca sarmalayıcıyı siler ve içeriğini belgede tutar, ve Clear() denetimin içeriğini boşaltırken denetimi kendisini korur.
XML Veri Bağlama
StructuredDocumentTag.XmlMapping, belgede özel bir XML bölümüne bağlamayı tanımlayan bir XmlMapping örneğidir: CustomXmlPart, XPath, PrefixMappings, StoreItemId ve IsMapped. SetMapping(), mevcut bir özel XML bölümüne bağlamayı kurar ve Delete() bunu kaldırır.
Çok Bölümlü (Aralıklı) İçerik Denetimleri
Birden fazla bölümü kapsayan içerik denetimi – IsMultiSection tarafından rapor edilen – tek bir StructuredDocumentTag düğüm yerine StructuredDocumentTagRangeStart ve StructuredDocumentTagRangeEnd düğümlerinin bir çiftiyle, StructuredDocumentTagRangeStart.RangeEnd aracılığıyla bağlanarak temsil edilir. Tek düğüm ve aralık biçimleri her ikisi de ortak IStructuredDocumentTag arayüzünü uygular, bu nedenle yalnızca Tag, Title, SdtType, Placeholder ve benzeri tanımlayıcı özelliklere ihtiyaç duyan kod, her iki biçimle de aynı şekilde çalışabilir.
İpuçları ve En İyi Uygulamalar
DocumentBuilder.InsertStructuredDocumentTag()‘ın desteklenen tip listesine güvenmeden önce kontrol edin – yalnızcaPlainText,RichText,Checkbox,DropDownList,ComboBox,PictureveDateimleçte eklenebilir; diğer tipler bir istisna fırlatır.- Bir içerik denetimini “flatten” (düzleştirmek) istediğinizde
Remove()yerineRemoveSelfOnly()kullanın – içeriğini belgede tutun ancak denetim sarmalayıcısını kaldırın. DropDownListveyaComboBoxdenetiminin seçenekleri göstermesini beklemeden önceListItems‘ı doldurun ve etkin olanı seçmek içinSelectedValue‘ı ayarlayın.- Kodunuz hem sıradan hem de çok bölümlü (aralık) içerik denetimlerini aynı şekilde ele alması gerekiyorsa, doğrudan
StructuredDocumentTagyerineIStructuredDocumentTagüzerinden programlayın. XmlMapping.SetMapping(), belgenin özel XML veri deposunda zaten var olması gereken özel bir XML bölümüne bağlanır – bir denetimi ona eşlemeden önce XML verisini ekleyin veya yükleyin.
Yaygın Sorunlar
| Sorun | Sebep | Düzeltme |
|---|---|---|
InsertStructuredDocumentTag() NotImplementedException fırlatır | İstenen SdtType (örneğin Citation, Equation veya BuildingBlockGallery) yedi eklenebilir türden biri değildir. | Şunlardan birini kullanın: PlainText, RichText, Checkbox, DropDownList, ComboBox, Picture, Date |
InsertStructuredDocumentTag() InvalidOperationException fırlatır | Metin imlecinde RepeatingSection veya RepeatingSectionItem istendi. | Bu türler tüm paragrafları veya tablo satırlarını sarar, bir imleç konumunu değil. |
| Bir içerik denetimini kaldırmak, içindeki metni de siler. | Remove() denetimi ve içeriğini birlikte siler. | İçeriği korumak için RemoveSelfOnly()’ı çağırın |
| Onay kutusu beklenen simgeyi göstermiyor | Özel işaretli/işaretsiz glifler ayarlanmamıştı | Çağırın SetCheckedSymbol() ve SetUncheckedSymbol() |
FAQ
Hangi içerik denetim türlerini DocumentBuilder ile doğrudan ekleyebilirim?
PlainText, RichText, Checkbox, DropDownList, ComboBox, Picture ve Date. Diğer SdtType değerleri InsertStructuredDocumentTag() tarafından desteklenmez.
Belirli bir etiketle tüm içerik denetimlerini nasıl bulabilirim?
Range.StructuredDocumentTags.GetByTag() kullanın, ya da GetByTitle() / GetById() kullanın eğer bunları eşleştiriyorsanız.
İçeriğini koruyarak bir içerik denetimini nasıl kaldırabilirim?
StructuredDocumentTag.RemoveSelfOnly() çağırın, Remove() yerine.
Bir içerik denetimini özel XML verilerine nasıl bağlarım?
Kontrol üzerinde XmlMapping.SetMapping() çağırın, mevcut bir özel XML bölümüne ve içinde bir XPath ifadesine işaret ederek.
Düz bir StructuredDocumentTag ile aralıklı olan arasındaki fark nedir?
Birden fazla belge bölümünü kapsayan bir içerik kontrolü, tek bir düğüm yerine StructuredDocumentTagRangeStart / StructuredDocumentTagRangeEnd çifti olarak temsil edilir; her iki biçim de IStructuredDocumentTag uygular.
API Reference Özeti
| Sınıf / Arayüz / Enum | Açıklama |
|---|---|
StructuredDocumentTag | İçerik kontrol düğümü; SdtType, Tag, Title, Remove(), RemoveSelfOnly(), Clear() |
IStructuredDocumentTag | Normal ve çok bölümlü içerik denetimleri tarafından paylaşılan ortak arayüz |
StructuredDocumentTagCollection | Aralık içindeki içerik denetimleri, Range.StructuredDocumentTags aracılığıyla; GetById(), GetByTag(), GetByTitle() |
StructuredDocumentTagRangeStart / StructuredDocumentTagRangeEnd | Çok bölümlü bir içerik denetimini temsil eden başlangıç/bitiş çifti |
SdtType | İçerik denetiminin türünü belirten enum |
SdtAppearance | İçerik denetimi için görsel ayırıcı stili |
SdtCalendarType / SdtDateStorageFormat | Tarih denetimi için takvim sistemi ve depolama formatı |
SdtListItem / SdtListItemCollection | Açılır liste veya birleşik kutu denetimi için seçenekler |
XmlMapping | İçerik denetimi için özel XML veri bağlaması; SetMapping(), Delete() |
DocumentBuilder.InsertStructuredDocumentTag | İmleçte desteklenen bir content-control türü ekler |