ModelItem Düzenleme Bağlamını Kullanma
Düzenleme ModelItem bağlamı, konak uygulamasının tasarımcıyla iletişim kurmak için kullandığı nesnedir. EditingContextkullanılabilecek ve Servicesolmak üzere iki yöntemi Items kullanıma sunar
Items koleksiyonu
Koleksiyon Items , konak ve tasarımcı arasında paylaşılan verilere veya tüm tasarımcıların kullanabileceği verilere erişmek için kullanılır. Bu koleksiyon, sınıfı aracılığıyla erişilen aşağıdaki özelliklere ContextItemManager sahiptir:
Hizmetler koleksiyonu
Koleksiyon Services , tasarımcının konakla etkileşimde bulunurken kullandığı hizmetlere veya tüm tasarımcıların kullandığı hizmetlere erişmek için kullanılır. Bu koleksiyon aşağıdaki not yöntemlerine sahiptir:
Tasarımcıya etkinlik atama
Etkinliğin hangi tasarımcıyı kullandığını belirtmek için Tasarım Aracı özniteliği kullanılır.
[Designer(typeof(MyClassDesigner))]
public sealed class MyClass : CodeActivity
{
}
Hizmet oluşturma
Tasarımcı ile konak arasında bilgi kanalı görevi görecek bir hizmet oluşturmak için bir arabirim ve bir uygulama oluşturulmalıdır. arabirimi, yöntemi tarafından Publish hizmetin üyelerini tanımlamak için kullanılır ve uygulama hizmetin mantığını içerir. Aşağıdaki kod örneğinde bir hizmet arabirimi ve uygulaması oluşturulur.
public interface IMyService
{
IEnumerable<string> GetValues(string DisplayName);
}
public class MyServiceImpl : IMyService
{
public IEnumerable<string> GetValues(string DisplayName)
{
return new string[] {
DisplayName + " One",
DisplayName + " Two",
"Three " + DisplayName
} ;
}
}
Hizmet yayımlama
Bir tasarımcının bir hizmeti tüketmesi için önce yöntemini kullanarak konak tarafından yayımlanması Publish gerekir.
this.Context.Services.Publish<IMyService>(new MyServiceImpl);
Hizmete abone olmak
Tasarımcı, yöntemindeki yöntemini kullanarak Subscribe hizmete erişim elde eder OnModelItemChanged . Aşağıdaki kod parçacığı bir hizmete nasıl abone olunduğunu gösterir.
protected override void OnModelItemChanged(object newItem)
{
if (!subscribed)
{
this.Context.Services.Subscribe<IMyService>(
servInstance =>
{
listBox1.ItemsSource = servInstance.GetValues(this.ModelItem.Properties["DisplayName"].ComputedValue.ToString());
}
);
subscribed = true;
}
}
Items koleksiyonunu kullanarak veri paylaşma
Items koleksiyonunun kullanılması Services koleksiyonunu kullanmaya benzer, ancak SetValue Yayımla yerine kullanılır. Bu koleksiyon, karmaşık işlevler yerine tasarımcılar ve konak arasında basit verileri paylaşmak için daha uygundur.
EditingContext konak öğeleri ve hizmetleri
.NET Framework, düzenleme bağlamı aracılığıyla erişilen bir dizi yerleşik öğe ve hizmet sağlar.
Öğeler:
AssemblyContextControlItem: Denetimler (ifade düzenleyicisi gibi) için iş akışı içinde kullanılacak başvuruda bulunılan yerel derlemelerin listesini yönetir.
ReadOnlyState: Tasarımcının salt okunur durumda olup olmadığını gösterir.
Selection: Seçili durumdaki nesne koleksiyonunu tanımlar.
WorkflowFileItem: Geçerli düzenleme oturumunun temel alındığı dosya hakkında bilgi sağlar.
Hizmetler:
AttachedPropertiesService: kullanılarak özelliklerin geçerli örneğe AddPropertyeklenmesine izin verir.
DesignerView: Tasarımcı tuvalinin özelliklerine erişime izin verir.
IActivityToolboxService: Araç kutusunun içeriğinin güncelleştirilmesini sağlar.
ICommandService: Tasarımcı komutlarını (Bağlam Menüsü gibi) özel olarak sağlanan hizmet uygulamalarıyla tümleştirmek için kullanılır.
IDesignerDebugView: Tasarımcı hata ayıklayıcısı için işlevsellik sağlar.
IExpressionEditorService: İfade Düzenleyicisi iletişim kutusuna erişim sağlar.
IIntegratedHelpService: Tasarımcıya tümleşik yardım işlevselliği sağlar.
IValidationErrorService: kullanarak ShowValidationErrorsdoğrulama hatalarına erişim sağlar.
IWorkflowDesignerStorageService: Verileri depolamak ve almak için bir iç hizmet sağlar. Bu hizmet .NET Framework tarafından dahili olarak kullanılır ve dış kullanıma yönelik değildir.
IXamlLoadErrorService: kullanarak ShowXamlLoadErrorsXAML yükleme hatası koleksiyonuna erişim sağlar.
ModelService: Tasarımcı tarafından düzenlenen iş akışının modeliyle etkileşime geçmek için kullanılır.
ModelTreeManager: kullanarak Rootmodel öğesi ağacının köküne erişim sağlar.
UndoEngine: Geri alma ve yineleme işlevselliği sağlar.
ViewService: Görsel öğeleri temel alınan model öğelerine Haritalar.
ViewStateService: Model öğeleri için görünüm durumlarını depolar.
VirtualizedContainerService: Sanal kapsayıcı kullanıcı arabirimi davranışını özelleştirmek için kullanılır.
WindowHelperService: Olay bildirimleri için temsilcileri kaydetmek ve kaydını silmek için kullanılır. Ayrıca bir pencere sahibinin ayarlanmasına da izin verir.